CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2026/01/21 03:18:20
Modified files:
sys/kern : uipc_socket.c
Log message:
Revert revision 1.379
Rewrite m_getuio() to better align data in the mbufs
...
Allowing m_getuio() to use m_clget() with sizes up to MAXMCLBYTES (64k)
puts too much pressure on the pmemrange allocator. Right now the
physical pages for mbufs need to be in a single contiguous segment. On
top of this pool multiplies the size by 8 and in pool headers may add an
additional alignment restriction on pysical memory on __HAVE_PMAP_DIRECT
archs. For 64k clusters half a megabyte of contiguous physical memory is
needed, for 12k clusters the use of in page headers result in a 128k
allocation on a 128k boundary (so in the worst case a 252k area is needed).
Both of those requests cause issues on landisk. With 64MB of RAM there is
little room and after some time the physical memory is so fragmented that
the allocations for such large contiguous segements fail. Even dropping
the buffercache to its minimum and paging out all pageable memory does
not help to recover.
OK kettenis@ bluhm@