IO-TLB buffers & aic7xxx - new results
Hi,
I have made a small kernel patch that allows me to follow the allocation and deallocation of IO-TLB buffers in the kernel.
First of all, by using a kernel command line parameter "swiotlb24", I have not been able to crash my machine anymore (however, this is for 1 controller and using only 1 disk).
On average, the amount of used IO-TLB buffers on my system is between 60 and 70, each only 1 slot wide (i.e. #buffers = #occupied slots).
If I do my usual "make install" test for parted, I see the a few allocations, but not many. Then after a few seconds when the dirty buffers are flashed (I can make this happen immediately by doing "make install; sync"), the IO-TLB usage peaks at 450 buffers occupying 1470 slots, i.e. the driver allocates ~400 buffers without intermediate deallocation, and most of them are 4 slots wide. It is interesting that more than 253 buffers seem to be requested at the same time.
What I'll do next is to try a heavier load on more than a single disk, and perhaps several controllers at once.
At least this way I can at least give recommendations for how large to set the swiotlb parameter with a given number of controllers.
If there's interest, I'll happily send my patch tomorrow.
I cannot see how the heuristic for allocating IO-TLB space could be improved, given that at the moment when the memory is allocated the kernel has no way to know how many 32-bit controllers populate its PCI slots.
Cheers,
Martin
-- Martin Wilck <[email protected]> FSC EP PS DS1, Paderborn Tel. +49 5251 8 15113