> We have several machines here with 128MB and 256MB main memory
> running ODT 3.0. We use TCP/IP and Streams very extensive. So we
> had to tune the streams parameters very high (NSTREAM even more than
> mtune says for maximum value).
> The applications really need these resources, it's not a programming
> bug :-) (for example we develop testsystems for OSI network management with
> several low-layer interfaces, graphical user interfaces and simulations
> of different telephone switches).
> We also use a very big buffer cache: One machine says at boot time:
> mem: total = 261760k, kernel = 32200k, user = 229560k
> kernel: i/o bufs = 21290k (high bufs = 14906k)
> netstat -m
> total configured streams memory: 1696.70KB
> Now the question:
> How big can i make the kernel without risking damage due to memory handling
> in the kernel itself?
There are several limits you might run into. The static text + data +
bss size of the kernel cannot exceed 8MB (actually 0x7F0000 bytes). You
would have to try very hard to exceed that limit. The STREAMS and disk
buffers you're worrying about are allocated at runtime by the kernel.
They come out of an area called "sysseg", which cannot be larger than
100MB (0x6400000 bytes). So you're not getting anywhere near that
Quote:> Is there a limit? And what means 'high bufs = ...'?
High buffers are buffers above 16MB in the physical address space.
Devices which use AT bus DMA (such as Adaptec 154x host adapters, QIC02
tape adapters, and the floppy controller) cannot directly access high
buffers. The kernel uses "bounce buffers" to transfer data between such
devices and low memory, then stores the data in high memory if
necessary. This is bad for performance. The best solution is to use
32-bit EISA or PCI devices where possible.
Quote:> And is there a difference from ODT 3.0 to OS 5.0?
The sysseg area in SCO OpenServer Release 5 is 152MB (0x9800000 bytes).
That might not even be relevant: STREAMS memory is dynamically allocated
with kmem_alloc(), and the buffer cache is handled by another completely
different mechanism. The stune file lists the maximum value of NBUF as
450000. Hmmm... I think kmem_alloc() itself comes out of sysseg, so you
would be limited to ~150MB of STREAMS data.
Further work is being done to support larger system memory (Release 5
still stops at 512MB). Some day you might be able to configure a 1.8GB