tech-kern archive

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

Re: where is my memory?



der Mouse wrote:
total memory = 2047 MB
avail memory = 1999 MB
total memory = 256 MB
avail memory = 239 MB
Some graphics chips, especially on lower-end machines, use main
memory, thus making it unavailable to the CPU.

It's not that simple.  I've seen this for a very long time, including
on machines with no graphics chips at all, such as 4.3 on a VAX 750.
Here's a live example; this is quoted from /var/run/dmesg.boot on a
SPARCstation LX that's my desktop at one of my workplaces:

total memory = 48688 KB
avail memory = 41676 KB

That's with a cg6 with its own private framebuffer RAM.

Well, for VAXen, the difference between total memory, and available
memory is:


***snip***

        format_bytes(pbuf, sizeof(pbuf), avail_end);
        printf("total memory = %s\n", pbuf);
        panicstr = NULL;
        mtpr(AST_NO, PR_ASTLVL);
        spl0();

#if VAX46 || VAX48 || VAX49 || VAX53 || VAXANY
        minaddr = 0;

        /*
         * Allocate a submap for physio.  This map effectively limits the
         * number of processes doing physio at any one time.
         */
        phys_map = uvm_km_suballoc(kernel_map, &minaddr, &maxaddr,
                                   VM_PHYS_SIZE, 0, false, NULL);
#endif

        format_bytes(pbuf, sizeof(pbuf), ptoa(uvmexp.free));
        printf("avail memory = %s\n", pbuf);

***snip***

So, obviously a malloc for physio... :-)

Don't know about any other ports, but the code is there for the
inspection...

        Johnny



Home | Main Index | Thread Index | Old Index