--- - branch: MAIN date: Fri Oct 13 19:07:09 UTC 2023 files: - new: '1.187' old: '1.186' path: src/sys/ddb/db_command.c pathrev: src/sys/ddb/db_command.c@1.187 type: modified - new: '1.42' old: '1.41' path: src/sys/ddb/db_interface.h pathrev: src/sys/ddb/db_interface.h@1.42 type: modified - new: '1.78' old: '1.77' path: src/sys/ddb/db_xxx.c pathrev: src/sys/ddb/db_xxx.c@1.78 type: modified - new: '1.165' old: '1.164' path: src/sys/kern/sys_pipe.c pathrev: src/sys/kern/sys_pipe.c@1.165 type: modified - new: '1.40' old: '1.39' path: src/sys/sys/pipe.h pathrev: src/sys/sys/pipe.h@1.40 type: modified - new: '1.119' old: '1.118' path: src/usr.bin/fstat/fstat.c pathrev: src/usr.bin/fstat/fstat.c@1.119 type: modified id: 20231013T190709Z.6aa82decbcfcbd128e8c8f3195eb7111c216d678 log: | Simplify/streamline pipes a little bit: - Allocate only one struct pipe not two (no need to be bidirectional here). - Then use f_flag (FREAD/FWRITE) to figure out what to do in the fileops. - Never wake the other side or acquire long-term (I/O) lock unless needed. - Whenever possible, defer wakeups until after locks have been released. - Do some things locklessly in pipe_ioctl() and pipe_poll(). Some notable results: - -30% latency on a 486DX2/66 doing 1 byte ping-pong within a single process. - 2.5x less lock contention during "make cleandir" of src on a 48 CPU machine. - 1.5x bandwith with 1kB messages on the same 48 CPU machine (8kB: same b/w). module: src subject: 'CVS commit: src' unixtime: '1697224029' user: ad