Jak znaleźć rozmiar pamięci wirtualnej i rozmiar pamięci podręcznej systemu Linux?

11

Czy jest jakieś polecenie, aby uzyskać rozmiar pamięci wirtualnej, rozmiar pamięci podręcznej i szybkość magistrali FSB systemu Linux? Czy wymiana w systemie Linux jest taka sama jak pamięć wirtualna?

Ananas
źródło
2
zamiana == pamięć wirtualna
Joakim Elofsson
Podaj specyfikację swojego procesora. Otwórz bios od uruchomienia systemu, aby określić FSB procesora. Lub po prostu google model swojego procesora. Jeśli masz komputer stacjonarny, możesz otworzyć obudowę i spojrzeć bezpośrednio na procesor, aby znaleźć model.
Jonno_FTW
5
Nie, swap i pamięć wirtualna są zupełnie inne. Na przykład mapowanie pamięci pliku 1 GB wymaga dodatkowego 1 GB pamięci wirtualnej, ale nie ma zmian w korzystaniu z wymiany. Swap to forma sklepu z zapleczem. Wiele zastosowań pamięci wirtualnej nie ma nic wspólnego ze sklepem z zapleczem. (Były też systemy z pamięcią wirtualną i bez zamiany, a także systemy z zamianą, ale bez pamięci wirtualnej.)
David Schwartz
Pamięć wirtualna = pamięć fizyczna + przestrzeń wymiany
Pratik Khadloya

Odpowiedzi:

11

To pytanie jest całkowicie zawarte w poprzednim pytaniu Jak znaleźć rozmiar pamięci wirtualnej i rozmiar pamięci podręcznej systemu Linux? . Jak wskazano w mojej odpowiedzi na to pytanie, sudo dmidecode --type processorpolecenie podaje prędkość „zegara zewnętrznego”, a szybkość FSB jest wielokrotnością (zwykle 2 lub 4 razy) tej prędkości.

Jeśli to nie zadziałało, powinieneś edytować swoje pierwotne pytanie i powiedzieć nam, jakie wyniki otrzymałeś lub jaki był błąd. Im bardziej jesteś konkretny, tym lepiej inni mogą ci pomóc.

Jak wskazał maniak The Journeyman, zazwyczaj można uzyskać tę samą miarę „Zegar zewnętrzny” lshww wartości zgłaszanej dla „zegara” w wyjściu związanym z jednostką centralną.

 *-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

Wreszcie, możesz znaleźć szybkość zegara zewnętrznego na wyjściu dmesg, chociaż nie jest to w żaden sposób standardowy sposób uzyskiwania dostępu do tych informacji. Szybkość FSB można znaleźć w ustawieniach BIOS lub przez sprawdzenie specyfikacji procesora, chociaż nie są one specyficzne dla systemu Linux.

Społeczność
źródło
dmidecodedziała tylko na x86. Procesory ARM nie mają polecenia i często zwracają bezużyteczne wartości, takie jak niepoprawne BogMIPS.
jww
1
Jestem trochę zdezorientowany, jak to zostało zaakceptowane. Wygląda na to, że odpowiada tylko na część pytania
Gi0rgi0s
Dlaczego jest to akceptowana odpowiedź? nie określa, jak określić rozmiar pamięci wirtualnej.
jww
10

Tak, zamiana to pamięć wirtualna.

Rozmiar pamięci wirtualnej Użyj swapon -s lub bezpłatnie

$ 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

Rozmiar pamięci podręcznej Pobierz to z / proc / cpuinfo . Pole „ rozmiar pamięci podręcznej ” podaje pamięć podręczną procesora. Na maszynach wielordzeniowych zobaczysz jeden wpis na procesor z własną wartością pamięci podręcznej.

$ 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:

Szybkość magistrali FSB (Front side bus) Można to uzyskać z narzędzia dmidecode , z argumentem procesora --type . Aby uruchomić to polecenie, potrzebujesz uprawnień sudo. FSB jest wskazywane przez prędkość raportowaną dla „ Zegara zewnętrznego ”. Rzeczywista prędkość jest zwykle 4 razy większa niż prędkość raportowana, ponieważ wiele instrukcji jest wykonywanych na cykl zegara.

$ 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

źródło
Mam Linux, nie ma polecenia dmidecode / lshw
ananas
Którą dystrybucję prowadzisz?
Czy masz również dostęp do sudo, aby uruchomić te polecenia na komputerze?
Format wyjściowy swapon -s jest teraz przestarzały. Zamiast tego użyj swapon --show
Waruna Ranasinghe
3

Wierzę, że lshw ma te informacje. Jednak nie wszystkie dystrybucje go mają (wskazówka - następnym razem PROSZĘ wspomnieć o używanej dystrybucji i wersji. To bardzo pomaga. Pomaga także sprecyzować to, co zrobiłeś do tej pory. „Jakaś komenda jak” nie jest wystarczająco dobra)

Journeyman Geek
źródło
3

Wypróbuj to na komputerze z systemem Linux: cat /proc/pal/cpu0/cache_info

To pokaże coś takiego:

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
Tomek
źródło
3

Spróbuj ulimit -a, na mojej maszynie wyświetli się coś takiego:

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

Uruchom free, na moim komputerze wynik jest następujący:

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

Napisałem ten kod, aby sprawdzić, ile wątków może utworzyć proces:

#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;

}

Wynik jest taki:

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
słoneczna
źródło
2

vmstat

Raporty vmstat raportują statystyki pamięci wirtualnej, która zawiera informacje o procesach, zamianie, wolnej pamięci, buforze i pamięci podręcznej, przestrzeni stronicowania, aktywności IO dysku, pułapkach, przerwaniach, przełączeniach kontekstu i aktywności procesora. Za pomocą polecenia vmstat administratorzy mogą mieć natychmiastowe raporty na temat zużycia pamięci.

Składnia vmstat

vmstat -[options] [delay count]

Przykładowe użycie vmstat

vmstat

Znaleziono tutaj

Joe
źródło
1 w górę, lepsze niż moje rozwiązanie: D, daje więcej informacji
monkey_p
2

Polecenie „wolne” pokazuje wykorzystanie pamięci, w tym to, co faktycznie jest używane, a co w buforach / pamięci podręcznej.

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

Polecenie „dmidecode” może dać ci wgląd w szybkość FSB.

perlguy9
źródło
0
swapon -s

Użyte pole wskaże aktualnie używaną kwotę

Filename      Type           Size       Used    Priority
/dev/sda5     partition      859436     0       -1
małpa
źródło
-1

Rozmiar strony :

$ getconf PAGESIZE

(lub)

$ getconf PAGE_SIZE

Próbować

swapinfo or swapinfo -a 
Joe
źródło