Як знайти розмір віртуальної пам'яті та розмір кешу в системі Linux?


11

Чи є якась команда для отримання розміру віртуальної пам’яті, розміру кешу та швидкості шини на передній стороні системи Linux? Чи є своп в linux таким же, як і віртуальна пам'ять?


2
swap == віртуальна пам’ять
Joakim Elofsson

Будь ласка, дайте характеристики свого процесора. Відкрийте біос при запуску системи, щоб визначити FSB вашого процесора. Або просто google модель вашого процесора. Якщо у вас настільний ПК, ви можете відкрити корпус і подивитися на процесор безпосередньо, щоб знайти модель.
Jonno_FTW

5
Ні, своп і віртуальна пам'ять абсолютно різні. Наприклад, для відображення пам’яті на 1 ГБ файл використовується додатковий 1 ГБ віртуальної пам’яті, але не має змін у використанні swap. Swap - це форма підкладки магазину. Багато видів віртуальної пам’яті не мають нічого спільного з резервним магазином. (І були системи з віртуальною пам'яттю і без свопу, а також системи з свопом, але без віртуальної пам'яті.)
David Schwartz

Віртуальна пам’ять = Фізична пам'ять +
Обмінні місця

Відповіді:


11

Це питання повністю міститься у попередньому запитанні Як знайти розмір віртуальної пам'яті та розмір кешу в системі Linux? . Як було зазначено у моїй відповіді на це питання, sudo dmidecode --type processorкоманда дає вам швидкість "Зовнішній такт", а швидкість FSB - кратна (як правило, 2 або 4 рази) цієї швидкості.

Якщо це не спрацювало для вас, ви повинні відредагувати своє первісне запитання та сказати нам, який результат ви отримали або яка помилка. Чим конкретніше ви, тим краще вам можуть допомогти інші.

Як зазначає The Geourmanman geek, типово ти можеш отримати той самий показник "Зовнішній годинник" від lshwзначення, повідомленого для "годинника" у процесорі, пов'язаному з процесором.

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

Нарешті, ви можете знайти зовнішню тактову частоту на виході dmesg, хоча це аж ніяк не стандартний спосіб доступу до цієї інформації. Ви можете знайти швидкість FSB за допомогою своїх налаштувань BIOS або відвідавши специфікацію процесора, хоча це не специфічно для Linux.


dmidecodeпрацює лише на x86. Процесори ARM не мають команди і часто повертають непотрібні значення, як-от неправильний BogMIPS.
jww

1
Я трохи розгублений, як це було прийнято. Схоже, це відповідає лише на частину запитання
Gi0rgi0s

Чому це прийнята відповідь? не вказано, як визначити розмір віртуальної пам'яті.
jww

10

Так, своп - це віртуальна пам'ять.

Розмір віртуальної пам'яті Використовуйте swapon -s або безкоштовно

$ 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

Розмір кешу Отримайте це з / proc / cpuinfo . Поле " розмір кеша " дає вам кеш на процесорі. На багатоядерних машинах ви побачите один запис на один процесор із власним значенням кешу.

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

Швидкість передньої шини (FSB) Ви можете отримати це за допомогою утиліти dmidecode , аргументуючи процесор --type . Для виконання цієї команди вам потрібен дозвіл sudo. FSB позначається швидкістю, повідомленою для " Зовнішнього годинника ". Фактична швидкість, як правило, в 4 рази перевищує повідомлену швидкість, оскільки ці багато інструкцій виконуються за тактовий цикл.

$ 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

У мене є Linux, він не має команди dmidecode / lshw
ананас

У якому дистрибутиві ти працюєш?

Також у вас є доступ sudo для запуску цих команд на машині?

Формат виводу swapon -s тепер застарілий. Замість цього використовуйте swapon
show

3

Я вірю, що lshw має цю інформацію. Однак не у всіх дистрибутивах є (підказка - наступного разу, будь ласка, згадуйте, який дистрибутив та версію ви використовуєте. Це дуже допомагає. Також допомагає бути конкретним щодо того, що ви робили досі.


3

Спробуйте це на машині Linux: cat /proc/pal/cpu0/cache_info

Це покаже щось на кшталт:

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

3

Спробуйте ulimit -a, на моїй машині це покаже щось на зразок:

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

Виконати free, на моїй машині результат такий:

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

Я написав цей код, щоб перевірити, скільки ниток може створити процес:

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

}

Результат такий:

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

2

vmstat

Звіти vmstat повідомляють статистику віртуальної пам’яті, яка містить інформацію про процеси, своп, вільну, буферну та кеш-пам’ять, простір підкачки, дію вводу-виводу, пастки, переривання, перемикання контексту та активність процесора. За допомогою команди vmstat адміністратори можуть мати миттєві звіти про використання пам'яті.

Синтаксис vmstat

vmstat -[options] [delay count]

Приклад використання vmstat

vmstat

Знайдено тут


1 вгору, краще, ніж моє рішення: D, дає більше інформації
monkey_p

2

Команда "безкоштовно" покаже вам використання пам'яті, включаючи те, що фактично використовується порівняно з тим, що знаходиться в буферах / кеші.

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

Команда "dmidecode" може дати деяке уявлення про швидкість FSB.


0
swapon -s

У використаному полі буде вказана сума, яка використовується в даний час

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

-1

Розмір сторінки:

$ getconf PAGESIZE

(або)

$ getconf PAGE_SIZE

Спробуйте

swapinfo or swapinfo -a 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.