Hi, Attached is a cleaned up version of stacker. Changes: 1. uses RCU to protect the list elements. 2. capable() now just uses RETURN_ERROR_IF_ANY_ERROR explicitly. 3. stacker exports lsm_adopt_next_secondary(char *name), which will delegate stacking of the next loaded LSM to the module identified by (name). 4. stacker doesn't touch the get/setprocattr functions. There's no point messing with that unless/until userspace code can handle it, as there's no clean way to handle all cases otherwise. 5. mod_unreg_security is removed. All modules use unregister_security () regardless of whether they were loaded using register_security() or mod_reg_security(). In this way, if capability() was escalated by selinux from secondary to a primary module, it doesn't end up unregistering the wrong way. I attach lmbench results on a 700Mhz 4-way SMP box comparing a stock - rc2-bk7 kernel with no stacking patches at all (nostack.lmbench), one with the stacking patches applied (chain-newrcu.lmbench), and one with roughly the same stacker.c, except rather than protect the list with rcu, we do not free memory when a LSM is unloaded, so no RCU protection in CALL_ALL and RETURN_ERROR_IF_ANY_ERROR. thanks, -serge -- ======================================================= Serge Hallyn Security Software Engineer, IBM Linux Technology Center serue@private
L M B E N C H 2 . 0 S U M M A R Y ------------------------------------ Basic system parameters ---------------------------------------------------- Host OS Description Mhz --------- ------------- ----------------------- ---- vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 Processor, Processes - times in microseconds - smaller is better ---------------------------------------------------------------- Host OS Mhz null null open selct sig sig fork exec sh call I/O stat clos TCP inst hndl proc proc proc --------- ------------- ---- ---- ---- ---- ---- ----- ---- ---- ---- ---- ---- vega.ltc. Linux 2.6.10- 700 0.30 1.10 10.8 12.7 37.0 1.45 5.47 250. 1119 3825 vega.ltc. Linux 2.6.10- 700 0.30 1.13 10.9 12.8 38.2 1.43 5.57 249. 1110 3816 vega.ltc. Linux 2.6.10- 700 0.30 1.12 11.0 12.8 38.8 1.44 5.54 249. 1120 3835 vega.ltc. Linux 2.6.10- 700 0.30 1.11 10.9 12.8 36.5 1.43 5.57 249. 1156 3827 MEAN 1.12 10.9 12.8 37.6 1.44 5.54 249 1126 3826 STDEV .01 0.1 .04 0.9 0.01 0.04 .4 18 7 CI (95%) Context switching - times in microseconds - smaller is better ------------------------------------------------------------- Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw --------- ------------- ----- ------ ------ ------ ------ ------- ------- vega.ltc. Linux 2.6.10- 11.6 15.9 32.3 17.7 33.1 16.7 32.8 vega.ltc. Linux 2.6.10- 11.0 16.1 32.9 16.4 31.3 16.3 33.1 vega.ltc. Linux 2.6.10- 11.6 15.7 32.5 18.6 31.8 16.9 34.0 vega.ltc. Linux 2.6.10- 11.1 15.7 32.5 17.9 32.8 17.2 32.8 MEAN 11.3 15.9 32.6 17.7 32.3 16.8 33.2 STDEV 0.3 0.2 0.2 0.8 0.7 0.3 0.5 CI (95%) *Local* Communication latencies in microseconds - smaller is better ------------------------------------------------------------------- Host OS 2p/0K Pipe AF UDP RPC/ TCP RPC/ TCP ctxsw UNIX UDP TCP conn --------- ------------- ----- ----- ---- ----- ----- ----- ----- ---- vega.ltc. Linux 2.6.10- 11.6 53.1 61.5 100.1 179. vega.ltc. Linux 2.6.10- 11.0 46.2 72.9 98.5 178. vega.ltc. Linux 2.6.10- 11.6 54.9 69.9 128.4 179. vega.ltc. Linux 2.6.10- 11.1 55.6 68.9 99.2 181. MEAN 11.3 52.5 68.3 106.6 179 STDEV 0.3 3.7 4.2 12.6 1 CI (95%) File & VM system latencies in microseconds - smaller is better -------------------------------------------------------------- Host OS 0K File 10K File Mmap Prot Page Create Delete Create Delete Latency Fault Fault --------- ------------- ------ ------ ------ ------ ------- ----- ----- vega.ltc. Linux 2.6.10- 80.5 42.5 209.6 79.6 11.2K 0.220 4.00000 vega.ltc. Linux 2.6.10- 80.6 42.7 210.4 79.9 11.1K 0.269 5.00000 vega.ltc. Linux 2.6.10- 80.9 42.6 208.1 80.1 11.1K 0.200 5.00000 vega.ltc. Linux 2.6.10- 80.6 43.0 208.9 80.0 11.3K 0.230 4.00000 MEAN 80.7 42.7 209.3 79.9 11.2K 0.230 4.5 STDEV 0.2 0.2 0.9 0.2 0.1K 0.025 0.5 CI (95%) *Local* Communication bandwidths in MB/s - bigger is better ----------------------------------------------------------- Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem UNIX reread reread (libc) (hand) read write --------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- ----- vega.ltc. Linux 2.6.10- 291. 283. 198. 278.8 331.7 185.9 158.5 328. 202.6 vega.ltc. Linux 2.6.10- 292. 284. 196. 282.2 327.9 185.9 147.0 331. 202.9 vega.ltc. Linux 2.6.10- 294. 282. 197. 282.1 331.4 187.0 146.6 328. 202.8 vega.ltc. Linux 2.6.10- 293. 283. 199. 278.8 328.0 185.8 145.2 328. 204.9 MEAN 293 283 198 280.5 329.8 186.2 149.3 329 203.3 STDEV 1 1 1 1.7 1.8 0.5 5.3 1 0.9 CI (95%) Memory latencies in nanoseconds - smaller is better (WARNING - may not be correct, check graphs) --------------------------------------------------- Host OS Mhz L1 $ L2 $ Main mem Guesses --------- ------------- ---- ----- ------ -------- ------- vega.ltc. Linux 2.6.10- 700 4.329 13.0 183.3 vega.ltc. Linux 2.6.10- 700 4.284 12.9 181.3 vega.ltc. Linux 2.6.10- 700 4.284 12.9 181.2 vega.ltc. Linux 2.6.10- 700 4.286 12.9 181.3 L M B E N C H 2 . 0 S U M M A R Y ------------------------------------ Basic system parameters ---------------------------------------------------- Host OS Description Mhz --------- ------------- ----------------------- ---- vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 Processor, Processes - times in microseconds - smaller is better ---------------------------------------------------------------- Host OS Mhz null null open selct sig sig fork exec sh call I/O stat clos TCP inst hndl proc proc proc --------- ------------- ---- ---- ---- ---- ---- ----- ---- ---- ---- ---- ---- vega.ltc. Linux 2.6.10- 700 0.30 1.97 15.0 18.5 36.6 1.43 6.20 258. 1172 4011 vega.ltc. Linux 2.6.10- 700 0.30 2.02 15.2 18.4 38.0 1.43 6.31 257. 1179 4041 vega.ltc. Linux 2.6.10- 700 0.30 1.99 15.2 18.7 38.2 1.44 6.13 257. 1189 4041 vega.ltc. Linux 2.6.10- 700 0.30 1.99 15.3 18.7 36.4 1.43 6.18 255. 1176 4043 MEAN 1.99 15.2 18.6 37.3 1.43 6.21 257 1179 4034 STDEV 0.02 0.1 0.1 0.8 .004 0.07 1 6 13 CI (95%) Context switching - times in microseconds - smaller is better ------------------------------------------------------------- Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw --------- ------------- ----- ------ ------ ------ ------ ------- ------- vega.ltc. Linux 2.6.10- 10.1 14.6 31.3 14.9 30.8 16.5 41.8 vega.ltc. Linux 2.6.10- 10.1 14.6 26.1 15.4 33.1 16.0 33.1 vega.ltc. Linux 2.6.10- 10.3 14.6 32.0 15.2 32.9 14.7 32.8 vega.ltc. Linux 2.6.10- 10.4 14.5 31.3 15.0 33.1 15.0 35.2 MEAN 10.2 14.6 30.2 15.1 32.5 15.6 35.7 STDEV 0.1 0.04 2.4 0.2 1.0 0.7 3.6 CI (95%) *Local* Communication latencies in microseconds - smaller is better ------------------------------------------------------------------- Host OS 2p/0K Pipe AF UDP RPC/ TCP RPC/ TCP ctxsw UNIX UDP TCP conn --------- ------------- ----- ----- ---- ----- ----- ----- ----- ---- vega.ltc. Linux 2.6.10- 10.1 49.8 97.2 104.8 186. vega.ltc. Linux 2.6.10- 10.1 48.6 86.7 127.8 187. vega.ltc. Linux 2.6.10- 10.3 48.9 96.3 105.3 189. vega.ltc. Linux 2.6.10- 10.4 49.7 100. 103.7 187. MEAN 10.2 49.3 95.1 110.4 187 STDEV 0.1 0.5 5.0 10.1 1 CI (95%) File & VM system latencies in microseconds - smaller is better -------------------------------------------------------------- Host OS 0K File 10K File Mmap Prot Page Create Delete Create Delete Latency Fault Fault --------- ------------- ------ ------ ------ ------ ------- ----- ----- vega.ltc. Linux 2.6.10- 88.3 46.4 213.9 82.6 12.0K 5.00000 vega.ltc. Linux 2.6.10- 88.9 46.8 214.4 82.9 11.4K 4.00000 vega.ltc. Linux 2.6.10- 89.0 46.7 215.5 82.6 11.1K 4.00000 vega.ltc. Linux 2.6.10- 88.2 46.3 214.5 81.9 11.0K 5.00000 MEAN 88.6 46.6 214.6 82.5 11.4K 4.5 STDEV 0.4 0.2 0.6 0.4 0.4K 0.5 CI (95%) *Local* Communication bandwidths in MB/s - bigger is better ----------------------------------------------------------- Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem UNIX reread reread (libc) (hand) read write --------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- ----- vega.ltc. Linux 2.6.10- 292. 283. 200. 277.8 328.0 183.8 145.1 331. 202.8 vega.ltc. Linux 2.6.10- 289. 283. 196. 277.9 331.5 183.7 146.6 331. 202.9 vega.ltc. Linux 2.6.10- 288. 283. 198. 281.5 328.0 185.3 145.2 328. 202.4 vega.ltc. Linux 2.6.10- 288. 282. 196. 277.3 331.5 185.9 145.3 331. 205.4 MEAN 289 283 198 278.6 329.8 184.7 145.6 330 203.4 STDEV 2 .4 2 1.7 1.8 0.9 0.6 1 1.2 CI (95%) Memory latencies in nanoseconds - smaller is better (WARNING - may not be correct, check graphs) --------------------------------------------------- Host OS Mhz L1 $ L2 $ Main mem Guesses --------- ------------- ---- ----- ------ -------- ------- vega.ltc. Linux 2.6.10- 700 4.329 13.0 184.9 vega.ltc. Linux 2.6.10- 700 4.329 13.0 184.9 vega.ltc. Linux 2.6.10- 700 4.330 13.0 184.8 vega.ltc. Linux 2.6.10- 700 4.329 13.0 182.9 L M B E N C H 2 . 0 S U M M A R Y ------------------------------------ Basic system parameters ---------------------------------------------------- Host OS Description Mhz --------- ------------- ----------------------- ---- vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 vega.ltc. Linux 2.6.10- i686-pc-linux-gnu 700 Processor, Processes - times in microseconds - smaller is better ---------------------------------------------------------------- Host OS Mhz null null open selct sig sig fork exec sh call I/O stat clos TCP inst hndl proc proc proc --------- ------------- ---- ---- ---- ---- ---- ----- ---- ---- ---- ---- ---- vega.ltc. Linux 2.6.10- 700 0.30 1.86 14.4 17.2 36.5 1.43 5.71 260. 1167 4024 vega.ltc. Linux 2.6.10- 700 0.30 1.89 14.7 17.5 40.7 1.45 5.77 259. 1179 3984 vega.ltc. Linux 2.6.10- 700 0.30 1.88 14.6 17.4 41.6 1.43 5.77 258. 1166 4043 vega.ltc. Linux 2.6.10- 700 0.30 1.88 14.4 17.2 36.7 1.45 5.67 260. 1183 4052 MEAN 0.30 1.88 14.5 17.3 38.9 1.44 5.73 259 1174 4026 STDEV 0.01 0.1 0.1 2.3 0.01 0.04 1 7 26 CI (95%) Context switching - times in microseconds - smaller is better ------------------------------------------------------------- Host OS 2p/0K 2p/16K 2p/64K 8p/16K 8p/64K 16p/16K 16p/64K ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw ctxsw --------- ------------- ----- ------ ------ ------ ------ ------- ------- vega.ltc. Linux 2.6.10- 10.1 14.5 31.6 15.0 32.8 14.9 32.9 vega.ltc. Linux 2.6.10- 10.2 14.6 31.1 14.8 32.8 15.6 32.4 vega.ltc. Linux 2.6.10- 10.0 14.8 31.7 15.2 32.3 14.8 38.3 vega.ltc. Linux 2.6.10- 9.900 14.3 31.4 14.8 32.1 15.8 32.9 MEAN 10.05 14.6 31.5 15.0 32.5 15.3 34.1 STDEV 0.11 0.2 0.2 0.2 0.3 0.4 2.4 CI (95%) *Local* Communication latencies in microseconds - smaller is better ------------------------------------------------------------------- Host OS 2p/0K Pipe AF UDP RPC/ TCP RPC/ TCP ctxsw UNIX UDP TCP conn --------- ------------- ----- ----- ---- ----- ----- ----- ----- ---- vega.ltc. Linux 2.6.10- 10.1 46.4 55.6 127.2 187. vega.ltc. Linux 2.6.10- 10.2 49.2 93.3 104.3 188. vega.ltc. Linux 2.6.10- 10.0 44.2 85.9 129.0 187. vega.ltc. Linux 2.6.10- 9.900 45.6 97.4 104.6 188. MEAN 10.05 46.4 83.1 116.3 188 STDEV 0.11 1.8 16.4 11.8 1 CI (95%) File & VM system latencies in microseconds - smaller is better -------------------------------------------------------------- Host OS 0K File 10K File Mmap Prot Page Create Delete Create Delete Latency Fault Fault --------- ------------- ------ ------ ------ ------ ------- ----- ----- vega.ltc. Linux 2.6.10- 89.9 45.5 215.2 82.3 11.0K 5.00000 vega.ltc. Linux 2.6.10- 90.6 45.9 217.9 81.5 11.1K 4.00000 vega.ltc. Linux 2.6.10- 90.8 45.8 218.4 83.0 10.7K 0.027 4.00000 vega.ltc. Linux 2.6.10- 90.4 45.9 215.7 81.7 10.8K 0.052 4.00000 MEAN 90.4 45.8 216.8 82.1 10.9K 0.040 4.250 STDEV 0.3 0.2 1.4 0.6 0.2K 0.013 0.433 CI (95%) *Local* Communication bandwidths in MB/s - bigger is better ----------------------------------------------------------- Host OS Pipe AF TCP File Mmap Bcopy Bcopy Mem Mem UNIX reread reread (libc) (hand) read write --------- ------------- ---- ---- ---- ------ ------ ------ ------ ---- ----- vega.ltc. Linux 2.6.10- 289. 281. 233. 281.9 331.6 183.6 145.0 331. 205.3 vega.ltc. Linux 2.6.10- 288. 282. 197. 277.7 327.7 186.0 145.0 331. 202.5 vega.ltc. Linux 2.6.10- 293. 283. 194. 281.6 331.6 183.8 144.0 328. 202.3 vega.ltc. Linux 2.6.10- 291. 282. 195. 281.6 327.8 183.7 145.0 327. 202.4 MEAN 290 282 205 280.7 329.7 184.3 144.8 329 203.1 STDEV 2 1 16 1.7 1.9 1 0.4 2 1.3 CI (95%) Memory latencies in nanoseconds - smaller is better (WARNING - may not be correct, check graphs) --------------------------------------------------- Host OS Mhz L1 $ L2 $ Main mem Guesses --------- ------------- ---- ----- ------ -------- ------- vega.ltc. Linux 2.6.10- 700 4.285 12.9 182.8 vega.ltc. Linux 2.6.10- 700 4.329 13.0 184.8 vega.ltc. Linux 2.6.10- 700 4.328 13.0 184.8 vega.ltc. Linux 2.6.10- 700 4.284 12.8 182.8
This archive was generated by hypermail 2.1.3 : Fri Dec 03 2004 - 08:58:29 PST