|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 301
|
xfree86 e virtual mem
Ciao ho notato che xfree86 usa 272m di memoria VIRT
785 root 13 -10 273m 16m 3940 S 1.7 3.3 2:03.01 XFree86 1026 malanaz 12 0 17412 13m 11m S 1.0 2.6 0:00.77 kdeinit 1031 malanaz 13 0 936 936 740 R 1.0 0.2 0:03.14 top Volevo sapere cosa vuol dire e se è possibile? Ho debian sid e xfree86 4.3 Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
273 M: totale memoria virtuale mappata dal processo
16 M: totale memoria _fisica_ utilizzata dal processo e dalle librerie che usa 273 mi sembra un pò alto, ma a parte questo è "normale" leggere un valore elevato in quel campo. Forse hai una scheda video con 128 MB di memoria?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 301
|
No ho un geforce 32mb ddr cmq ho la risoluzione dello schermo a 1280x1024x24 forse è quello?
A questo punto ti kiedo un'altra cosa ma un valore così alto nella memoria virtuale mi consuma memoria per le altre applicazioni o no? Grazie |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
No. Non confondere "memoria virtuale mappata" con "memoria fisica". A una pagina di memoria virtuale può corrispondere:
- una pagina fisica (è l'unico caso in cui "consumi memoria") - un file - una pagina finita in swap - uno spazio di i/o di un dispositivo - assolutamente nulla (utile per tecniche quali la COW) - varie ed eventuali Ciascun programma sotto linux ha a disposizione normalmente 3gb di indirizzi virtuali da utilizzare per quello che vuole, indipendentemente dalla memoria fisica del sistema.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2002
Città: Morbegno (SO)
Messaggi: 1410
|
cos'e la cow?
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
COW = copy-on-write; ovvero alloca pagine fisiche solo quando il processo ne fa uso.
Se conosci un pò di c prova ad eseguire questo programmino, e a controllare con top la memoria che utilizza: Codice:
#include <stdlib.h> #include <stdio.h> #include <sys/mman.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define SIZE (64*1024*1024) int main() { char *ptr; int x; int fd; fd = open("/dev/zero", O_RDWR); if(fd<0) { perror("open"); return -1; } printf("controlla con top e premi <invio>\n"); getchar(); ptr = (char *) mmap(NULL, SIZE, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); if(-1==(int)ptr) { perror("mmap"); return -1; } printf("memoria mappata - controlla con top e premi <invio>\n"); getchar(); for(x=0; x<SIZE; x+= 4096) ptr[x] = 1; // COW in action :-) printf("memoria allocata - controlla con top e premi <invio>\n"); getchar(); munmap(ptr, SIZE); printf("memoria rilasciata - controlla con top e premi <invio>\n"); getchar(); close(fd); return 0; }
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2002
Città: Morbegno (SO)
Messaggi: 1410
|
un bel man mmap mi sembra la soluzione,
cosi ad occhio o capito piu o meno ma devo leggermi il man ma il 4096 e la dimensione standard delle pagine? da quanto ho capito allochi virtualmente 64 mb poi inizi ad ogni pagina a scriverci un 1,li dovrebbe creare la memoria fisica per ogni pagina e gestirla come memoria normalmente(possibilita di swapp ecc) la diversita con una normale malloc e che la malloc la crea subito...e giusto quello che ho capito? |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
malloc usa la chiamata di sistema brk per allocare memoria, che è gestita un pò diversamente da mmap. Inizialmente la malloc non crea neanche le pagine di memoria virtuale mappate, in quanto modificando il limite tramite brk il kernel sa automaticamente quale regione appartiene (apparterrà fisicamente dopo un tentativo di accesso) al programma.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Ho notato pure io l'uso di tutta quella memoria... potrebbe essere dovuta all'AGP aperture size???
E inoltre prova a staccare i driver nvidia, vedrai che ti cala di circa 100Mb! (almeno cosi mi e' capitato!) Ciao
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
![]() |
![]() |
![]() |
#10 | ||
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
Quote:
![]() ![]() ![]() ![]() ![]() ![]() Ciao
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Mar 2003
Città: Roma
Messaggi: 301
|
I driver nvidia mi servono per quake3... Cmq se ho capito bene non è un problema per la memoria fisica (ogni tanto ho bisogno di girare programmi che occupano pure 300/400 Mb), quindi non me ne preoccuperò.
Grazie |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quando ci sono i driver nvidia in mezzo non puoi essere sicuo di niente...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:50.