Luke Kenneth Casson Leighton wrote:
On Mon, Oct 20, 2014 at 2:34 PM, Howard Chu hyc@symas.com wrote:
I can probably use taskset or something similar to restrict a process to a particular set of cores. What exactly do you have in mind?
keeping the writers and readers proposed test, but onto the same 8 cores only, running:
Well in the meantime, the 32/32 test finished:
Writers Run Time CPU % Context Switches Write Read Run Time CPU % Wall User Sys Vol Invol Wall User Sys 1 10:01.38 00:09:34.90 00:00:25.80 99 9 2040 27160 5877894 10:00.68 05:19:03.44 00:00:35.34 3192 2 10:01.38 00:09:15.15 00:02:41.94 119 14397526 2955 24012 6150801 10:00.67 05:19:00.96 00:00:38.23 3192 4 10:01.34 00:09:06.93 00:02:46.94 118 14246971 8545 23795 6067928 10:00.68 05:18:59.65 00:00:39.52 3192 8 10:01.49 00:09:04.22 00:02:53.09 119 14011236 10850 23589 5961381 10:00.69 05:18:56.82 00:00:42.54 3192 16 10:01.64 00:09:07.32 00:02:53.09 119 13787738 20049 23670 5966794 10:00.68 05:18:59.13 00:00:40.35 3192 32 10:01.78 00:09:04.29 00:02:58.40 120 13205576 27847 23337 5959624 10:00.70 05:19:00.54 00:00:39.46 3192
The timings on the left are for the writer process; the reader process is on the right. You were right, the number of writers is largely irrelevant because they're all waiting most of the time. There's a huge jump in System CPU time from 1 writer to 2 writers, because with only 1 writer the mutex is uncontended and essentially zero-cost. As more writer threads are added, the System CPU time will rise.
The readers are basically unaffected by the number of writers.