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

11

Gibt es einen Befehl zum Abrufen der Größe des virtuellen Speichers, der Cache-Größe und der Geschwindigkeit des Front-Side-Busses eines Linux-Systems? Ist Swap unter Linux dasselbe wie virtueller Speicher?

Ananas
quelle
2
Swap == virtueller Speicher
Joakim Elofsson
Bitte geben Sie die technischen Daten Ihrer CPU an. Öffnen Sie das BIOS beim Start Ihres Systems, um den FSB Ihrer CPU zu ermitteln. Oder googeln Sie einfach das Modell Ihrer 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
5
Nein, Swap und virtueller Speicher sind völlig unterschiedlich. Beispielsweise verwendet die Speicherzuordnung einer 1-GB-Datei zusätzliche 1 GB virtuellen Speicher, ändert jedoch nichts an der Verwendung von Swap. Swap ist eine Art Backing Store. Viele Verwendungen des virtuellen Speichers haben nichts mit dem Sicherungsspeicher zu tun. (Und es gab Systeme mit virtuellem Speicher und ohne Swap sowie Systeme mit Swap, aber ohne virtuellen Speicher.)
David Schwartz
Virtueller Speicher = physischer Speicher + Swap Space
Pratik Khadloya

Antworten:

11

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

Wenn dies bei Ihnen 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 Ihnen andere helfen.

Wie von The Journeyman Geek hervorgehoben, können Sie in der Regel das gleiche Maß lshwfür " Externe Uhr" in dem Wert erhalten, der für "Uhr" 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 finden Sie möglicherweise die externe Taktrate im Ausgang von dmesg, obwohl dies keineswegs eine Standardmethode für den Zugriff auf diese Informationen ist. Sie können die FSB-Geschwindigkeit über Ihre BIOS-Einstellungen oder durch Nachschlagen Ihrer CPU-Spezifikation ermitteln, obwohl diese nicht Linux-spezifisch sind.

Gemeinschaft
quelle
dmidecodefunktioniert nur auf x86. ARM-Prozessoren verfügen nicht über den Befehl und geben häufig unbrauchbare Werte zurück, z. B. falsche BogMIPS.
JWW
1
Ich bin ein wenig verwirrt darüber, wie dies akzeptiert wurde. Sieht so aus, als würde es nur einen Teil der Frage beantworten
Gi0rgi0s
Warum ist das die akzeptierte Antwort? Es wird nicht angegeben, wie die Größe des virtuellen Speichers bestimmt werden soll.
JWW
10

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

Cache-Größe Holen Sie sich dies aus / proc / cpuinfo . Das Feld " Cache-Größe " gibt Ihnen den Cache auf der CPU an. Auf Multi-Core-Computern wird pro Prozessor ein Eintrag mit einem eigenen 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:

Geschwindigkeit des Front-Side-Busses (FSB) Sie können dies vom Dienstprogramm dmidecode mit dem Prozessorargument --type abrufen . Sie benötigen die sudo-Berechtigung, um diesen Befehl auszuführen. Der FSB wird durch die für " Externe Uhr " angegebene Geschwindigkeit angezeigt . Die tatsächliche Geschwindigkeit beträgt normalerweise das 4-fache der gemeldeten Geschwindigkeit, da diese vielen Befehle 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

quelle
Ich habe Linux, es hat nicht dmidecode / lshw Befehl
Ananas
Welche Distribution läufst du?
Haben Sie auch Sudo-Zugriff, um diese Befehle auf dem Computer auszuführen?
Das Ausgabeformat von swapon -s ist jetzt veraltet. Verwenden Sie stattdessen swapon --show
Waruna Ranasinghe
3

Ich glaube, lshw hat diese Informationen. Allerdings haben es nicht alle Distributionen (Hinweis - beim nächsten Mal BITTE erwähnen Sie, welche Distribution und Version Sie verwenden. Es hilft sehr. Es hilft auch, genau zu sagen, was Sie bisher getan haben. 'Einige Befehle wie' sind nicht gut genug).

Gesellenfreak
quelle
3

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

Dies zeigt so 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
Tom
quelle
3

Versuchen Sie ulimit -a, auf meinem Computer wird Folgendes angezeigt:

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

Führen Sie free, auf meinem Computer ist das Ergebnis wie folgt:

             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 wie folgt:

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
sonnig
quelle
2

vmstat

In vmstat-Berichten werden Statistiken zum virtuellen Speicher gemeldet, die Informationen zu Prozessen, Swap-, Free-, Puffer- und Cache-Speicher, Paging-Speicher, Festplatten-E / A-Aktivität, Traps, Interrupts, Kontextwechseln 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 für die Verwendung von vmstat

vmstat

gefunden hier

Joe
quelle
1 auf, besser als meine Lösung: D, gibt mehr Infos
monkey_p
2

Der Befehl "free" zeigt Ihnen die Speichernutzung an, einschließlich der tatsächlich verwendeten und der in den Puffern / im Cache enthaltenen Informationen.

    # 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" gibt Ihnen möglicherweise einen Einblick in die FSB-Geschwindigkeit.

perlguy9
quelle
0
swapon -s

Das verwendete Feld zeigt die aktuell verwendete Menge an

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

Seitengröße :

$ getconf PAGESIZE

(oder)

$ getconf PAGE_SIZE

Versuchen

swapinfo or swapinfo -a 
Joe
quelle