[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pool_cache_get behavior
I talked with andrew about this issue today and here is relevant part
of our discussion
KM_NOSLEEP... probably due to that implying UVM_MAP_TRYLOCK
The issue is that parts of kernel_map are pageable. Paging can take a
long time, and the map can be held locked while paging.
Therefore when we do a NOSLEEP allocation from kernel_map, it's also
implicitly a TRYLOCK one because we can't wait to lock the map.
Therefore NOSLEEP allocations have yet another path to fail.
1. Don't do KM_NOSLEEP allocations. KM_NOSLEEP is for lazy dorks.
2. Rework kernel memory layout so there is a deadicated heap map that
does NOT have pageable memory, e.g. kmem_map. Maintain a seperate map
for pageable stuff.
Currently we are doing 1, but I think that we should at least look at option 2.
Any suggestions ?
Main Index |
Thread Index |