Wie finde ich die Größe des virtuellen Speichers und des Caches eines Linux-Systems?

82283
pineapple

Gibt es einen Befehl, um virtuelle Speichergröße, Cache-Größe und Front-Side-Bus-Geschwindigkeit eines Linux-Systems zu erhalten? Ist Swap in Linux gleichbedeutend mit virtuellem Speicher?

9
Swap == virtueller Speicher Joakim Elofsson vor 14 Jahren 2
Nein, Swap und virtueller Speicher sind völlig unterschiedlich. Beispielsweise verwendet die Speicherzuordnung für eine 1-GB-Datei zusätzliche 1 GB virtuellen Speicher, ändert jedoch nichts an der Verwendung von Swap. Swap ist eine Form des Unterstützungsspeichers. Viele Anwendungen des virtuellen Speichers haben nichts mit Backing Store zu tun. (Und es gab Systeme mit virtuellem Speicher und keinen Swap sowie Systeme mit Swap, aber keinen virtuellen Speicher.) David Schwartz vor 11 Jahren 4
Bitte geben Sie die Spezifikationen Ihrer CPU an. Öffnen Sie das BIOS beim Start Ihres Systems, um den FSB Ihrer CPU zu ermitteln. Oder google einfach das Modell deiner CPU. Wenn Sie einen Desktop-PC haben, können Sie das Gehäuse öffnen und direkt auf die CPU schauen, um das Modell zu finden. Jonno_FTW vor 14 Jahren 0
Virtueller Speicher = Physischer Speicher + Swap Space Pratik Khadloya vor 6 Jahren 0

9 Antworten auf die Frage

10
nagul

Ja, Swap ist virtueller Speicher.

Größe des virtuellen Speichers Verwenden Sie swapon -s oder free

$ swapon -s Filename Type Size Used Priority /dev/sda6 partition 1004020 39620 -1  $ free total used free shared buffers cached Mem: 3087892 2879036 208856 0 394288 835052 -/+ buffers/cache: 1649696 1438196 Swap: 1004020 39620 964400 

Cachegröße Holen Sie sich dies von / proc / cpuinfo . Das Feld " Cache-Größe " gibt den Cache auf der CPU an. Auf Multi-Core-Computern wird pro Prozessor ein Eintrag mit eigenem Cache-Wert angezeigt.

$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 14 model name : Genuine Intel(R) CPU T2300 @ 1.66GHz stepping : 8 cpu MHz : 1000.000 cache size : 2048 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 apicid : 0 initial apicid : 0 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts pni monitor est tm2 xtpr pdcm bogomips : 3324.64 clflush size : 64 power management: 

Front-Side-Bus-Geschwindigkeit (FSB) Sie können dies vom Dienstprogramm dmidecode mit dem Prozessorargument --type erhalten . Sie benötigen eine Sudo-Berechtigung, um diesen Befehl auszuführen. Der FSB wird durch die für " External Clock " angegebene Geschwindigkeit angezeigt . Die tatsächliche Geschwindigkeit ist normalerweise das Vierfache der gemeldeten Geschwindigkeit, da diese vielen Anweisungen pro Taktzyklus ausgeführt werden.

$ sudo dmidecode --type processor # dmidecode 2.9 SMBIOS 2.4 present.  Handle 0x0400, DMI type 4, 32 bytes Processor Information  Socket Designation: Microprocessor Type: Central Processor Family: Pentium M Manufacturer: Intel ID: E8 06 00 00 FF FB E9 BF Signature: Type 0, Family 6, Model 14, Stepping 8 Flags: FPU (Floating-point unit on-chip) VME (Virtual mode extension) DE (Debugging extension) PSE (Page size extension) TSC (Time stamp counter) MSR (Model specific registers) PAE (Physical address extension) MCE (Machine check exception) CX8 (CMPXCHG8 instruction supported) APIC (On-chip APIC hardware supported) SEP (Fast system call) MTRR (Memory type range registers) PGE (Page global enable) MCA (Machine check architecture) CMOV (Conditional move instruction supported) PAT (Page attribute table) CLFSH (CLFLUSH instruction supported) DS (Debug store) ACPI (ACPI supported) MMX (MMX technology supported) FXSR (Fast floating-point save and restore) SSE (Streaming SIMD extensions) SSE2 (Streaming SIMD extensions 2) SS (Self-snoop) HTT (Hyper-threading technology) TM (Thermal monitor supported) PBE (Pending break enabled) Version: Not Specified Voltage: 3.3 V External Clock: 133 MHz Max Speed: 1800 MHz Current Speed: 1000 MHz Status: Populated, Enabled Upgrade: None L1 Cache Handle: 0x0700 L2 Cache Handle: 0x0701 L3 Cache Handle: Not Provided 
Ich habe Linux, es hat nicht den Befehl dmidecode / lshw pineapple vor 14 Jahren 0
Welche Distribution laufen Sie? nagul vor 14 Jahren 0
Haben Sie auch Sudo-Zugriff, um diese Befehle auf dem Computer auszuführen? nagul vor 14 Jahren 0
Das Ausgabeformat von swapon -s ist jetzt veraltet. Verwenden Sie stattdessen swapon --show Waruna Ranasinghe vor 6 Jahren 0
10
nagul

Diese Frage ist vollständig in Ihrer vorherigen Frage enthalten. So finden Sie die Größe des virtuellen Speichers und des Caches eines Linux-Systems. . Wie in meiner Antwort auf diese Frage ausgeführt, sudo dmidecode --type processorgibt der Befehl die Geschwindigkeit "External Clock" an, und die FSB-Geschwindigkeit ist ein Vielfaches (normalerweise das 2- oder 4-Fache) dieser Geschwindigkeit.

Wenn dies für Sie nicht funktioniert hat, sollten Sie Ihre ursprüngliche Frage bearbeiten und uns mitteilen, welche Ausgabe Sie erhalten haben oder was der Fehler war. Je spezifischer Sie sind, desto besser können andere Ihnen helfen.

Wie in The Journeyman geek darauf hingewiesen, können Sie in der Regel dasselbe Maß lshwfür " External Clock" aus dem Wert erhalten, der für "clock" in der CPU-bezogenen Ausgabe angegeben ist.

 *-cpu description: CPU product: Genuine Intel(R) CPU T2300 @ 1.66GHz vendor: Intel Corp. physical id: 400 bus info: cpu@0 version: 6.14.8 serial: 0000-06E8-0000-0000-0000-0000 slot: Microprocessor size: 1GHz capacity: 1800MHz width: 32 bits clock: 133MHz capabilities: fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx constant_tsc arch_perfmon bts pni monitor est tm2 xtpr pdcm cpufreq configuration: id=0 

Schließlich können Sie die externe Taktrate in der Ausgabe von finden dmesg, obwohl dies keinesfalls eine Standardmethode ist, um auf diese Informationen zuzugreifen. Sie finden die FSB-Geschwindigkeit möglicherweise über Ihre BIOS-Einstellungen oder durch Nachschlagen der CPU-Spezifikationen, obwohl diese nicht linuxspezifisch sind.

`dmidecode` funktioniert nur bei x86. ARM-Prozessoren verfügen nicht über den Befehl und geben oft unbrauchbare Werte zurück, wie z. B. falsches BogMIPS. jww vor 7 Jahren 0
Ich bin etwas verwirrt darüber, wie dies angenommen wurde. Sieht aus, als würde sie nur einen Teil der Frage beantworten Gi0rgi0s vor 6 Jahren 0
3
Tom

Versuchen Sie dies auf dem Linux-Rechner: cat /proc/pal/cpu0/cache_info

Dies zeigt etwas wie:

Cache levels : 3 Unique caches : 5  Data Cache level 1: Size : 16384 bytes Attributes : WriteThrough Associativity : 4 Line size : 64 bytes Stride : 128 bytes Store latency : 0 cycle(s) Load latency : 1 cycle(s) Store hints : Load hints : [Temporal, level 1] Alias boundary : 4096 byte(s) Tag LSB : 12 Tag MSB : 49 Instruction Cache level 1: Size : 16384 bytes Attributes : Associativity : 4 Line size : 64 bytes Stride : 128 bytes Store latency : N/A Load latency : 1 cycle(s) Store hints : Load hints : [Temporal, level 1] Alias boundary : 4096 byte(s) Tag LSB : 12 Tag MSB : 49 Data Cache level 2: Size : 262144 bytes Attributes : WriteBack Associativity : 8 Line size : 128 bytes Stride : 128 bytes Store latency : 7 cycle(s) Load latency : 5 cycle(s) Store hints : [Temporal, level 1][Non-temporal, all levels] Load hints : [Temporal, level 1][Non-temporal, level 1][Non-temporal, all levels] Alias boundary : 4096 byte(s) Tag LSB : 15 Tag MSB : 49 Instruction Cache level 2: Size : 524288 bytes Attributes : Associativity : 8 Line size : 128 bytes Stride : 128 bytes Store latency : N/A Load latency : 7 cycle(s) Store hints : Load hints : [Temporal, level 1][Non-temporal, level 1][Non-temporal, all levels] Alias boundary : 4096 byte(s) Tag LSB : 16 Tag MSB : 49 Data/Instruction Cache level 3: Size : 4194304 bytes Attributes : Unified WriteBack Associativity : 8 Line size : 128 bytes Stride : 128 bytes Store latency : 7 cycle(s) Load latency : 14 cycle(s) Store hints : [Temporal, level 1] Load hints : [Temporal, level 1][Non-temporal, level 1] Alias boundary : 4096 byte(s) Tag LSB : 19 Tag MSB : 49 
2
Journeyman Geek

Ich glaube, dass lshw diese Informationen hat. Aber nicht alle Distributionen haben es (Hinweis: Bitte erwähnen Sie beim nächsten Mal, welche Distribution und Version Sie verwenden. Es hilft sehr. Es hilft auch, genau zu sagen, was Sie bisher gemacht haben.

2
sunpy

Versuchen Sie ulimit -a, auf meinem Rechner wird es ungefähr so ​​aussehen:

core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31321 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 31321 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited 

Run free, auf meinem Rechner ist das Ergebnis so:

 total used free shared buffers cached Mem: 4024900 606472 3418428 0 85768 366980 -/+ buffers/cache: 153724 3871176 Swap: 3998716 0 3998716 

Ich habe diesen Code geschrieben, um zu testen, wie viele Threads ein Prozess erstellen kann:

#include<iostream> #include<pthread.h> #include<unistd.h> #include<stdio.h> using namespace std;  #define MAX_THREAD_NUM 1100 void * threadTest(void* arg){ while(true){ sleep(5); } pthread_exit(NULL); }  int main(){ for(int i = 0;i< MAX_THREAD_NUM;i++){ pthread_t tid; cout<<"create thread "<< i <<"... "<<endl; int ret = pthread_create(&tid,NULL,&threadTest,NULL); if(ret !=0){ perror("pthread_create error"); } pthread_detach(tid); } while(true){ sleep(5); } return 0;  } 

Das Ergebnis ist so:

create thread 378... create thread 379... create thread 380... create thread 381... create thread 382... pthread_create error: Cannot allocate memory create thread 383... pthread_create error: Cannot allocate memory create thread 384... pthread_create error: Cannot allocate memory create thread 385... pthread_create error: Cannot allocate memory create thread 386... pthread_create error: Cannot allocate memory 
1
joe

vmstat

vmstat-Berichte enthalten Statistiken zu virtuellem Arbeitsspeicher, die Informationen zu Prozessen, Auslagerungen, freiem Speicher, Puffer- und Cache-Speicher, Paging-Bereich, Festplatten-E / A-Aktivität, Traps, Interrupts, Kontextwechsel und CPU-Aktivität enthalten. Mit dem Befehl vmstat können Administratoren sofort Berichte zur Speichernutzung erstellen.

Syntax von vmstat

vmstat -[options] [delay count] 

Beispiel zur Verwendung von vmstat

vmstat 

gefunden hier

1 auf, besser als meine Lösung: D gibt mehr Informationen monkey_p vor 14 Jahren 0
1
perlguy9

Der Befehl "free" zeigt Ihnen die Speicherauslastung an, einschließlich der tatsächlichen Verwendung und der Puffer- / Cache-Werte.

 # free total used free shared buffers cached Mem: 3896252 3779044 117208 0 65788 1363972 -/+ buffers/cache: 2349284 1546968 Swap: 2097144 886836 1210308 

Der Befehl "dmidecode" kann Ihnen einen Einblick in die FSB-Geschwindigkeit geben.

0
joe

Seitengröße :

$ getconf PAGESIZE 

(oder)

$ getconf PAGE_SIZE 

Versuchen

swapinfo or swapinfo -a 
0
monkey_p
swapon -s 

Das verwendete Feld zeigt den aktuell verwendeten Betrag an

Filename Type Size Used Priority /dev/sda5 partition 859436 0 -1