View Single Post
Old 04-29-03, 12:06 PM   #5
bwkaz
Registered User
 
Join Date: Sep 2002
Posts: 2,262
Default Re: Re: i'm not talking about OpenGL performance

Quote:
Originally posted by xobnis
when I run the stock X4.3 drivers my X process is using about 91MB of mem but when I use the nvidia drivers (newly release or previous versions) my X process is using about 271MB of mem.
Nope, it's not.

From the 4363 README:

Quote:
Q: Why does X use so much memory?

A: When measuring any application's memory usage, you must be
careful to distinguish between physical system RAM used and virtual
mappings of shared resources. For example, most shared libraries exist
only once in physical memory but are mapped into multiple processes.
This memory should only be counted once when computing total memory
usage. In the same way, the video memory on a graphics card or
register memory on any device can be mapped into multiple processes.
These mappings do not consume normal system RAM.

This has been a frequently discussed topic on XFree86 mailing
lists; see, for example:

http://marc.theaimsgroup.com/?l=xfre...5767116567&w=2

The `pmap` utility described in the above thread and available here:

http://web.hexapodia.org/~adi/pmap.c

is a useful tool in distinguishing between types of memory mappings.
For example, while `top` may indicate that X is using several hundred
MB of memory, the last line of output from pmap:

mapped: 287020 KB writable/private: 9932 KB shared: 264656 KB

reveals that X is really only using roughly 10MB of system RAM
(the "writable/private" value).

Note, also, that X must allocate resources on behalf of X clients (the
window manager, your web browser, etc); X's memory usage will increase
as more clients request resources such as pixmaps, and decrease as
you close X applications.
To use pmap, put it in a directory by itself and just run make pmap (note: in this case, you don't need a Makefile). Then, ./pmap `pidof X`, like the thread says.

On my machine, the reason that ps and top both report X using ungodly amounts of memory is that the X driver mmap's /dev/nvidia0, twice. Each mmap appears to "consume" (even though it doesn't) 128MB of memory, which is the amount of my video RAM.

So none of this 256MB of space is being put in system memory -- it's my video RAM instead. I bet if you look through the pmap output on your machine, you'll see something very similar.
__________________
Registered Linux User #219692
bwkaz is offline   Reply With Quote