e0e10b0607
These annotations help to mitigate false sharing on multiprocessor systems. Variables annotated with __cacheline_aligned are placed into the .data.cacheline_aligned section in the kernel. Each item in this section is aligned on a cachline boundary - this avoids false sharing. Highly contended global locks are a good candidate for __cacheline_aligned annotation. Variables annotated with __read_mostly are packed together tightly into a .data.read_mostly section in the kernel. The idea here is that we can pack infrequently modified data items into a cacheline and avoid having to purge the cache, which would happen if read mostly data and write mostly data shared a cachline. Initialisation variables are a prime candiate for __read_mostly annotations. |
||
---|---|---|
.. | ||
altq | ||
arch | ||
coda | ||
common/bus_dma | ||
compat | ||
conf | ||
crypto | ||
ddb | ||
dev | ||
dist | ||
external | ||
fs | ||
gdbscripts | ||
ipkdb | ||
kern | ||
lib | ||
miscfs | ||
modules | ||
net | ||
net80211 | ||
netatalk | ||
netbt | ||
netinet | ||
netinet6 | ||
netipsec | ||
netisdn | ||
netiso | ||
netkey | ||
netnatm | ||
netsmb | ||
nfs | ||
opencrypto | ||
rump | ||
secmodel | ||
stand | ||
sys | ||
ufs | ||
uvm | ||
Makefile |