tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: pool_cache_get behavior

Hi folks,

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 ?




Home | Main Index | Thread Index | Old Index