Как найти размер виртуальной памяти и размер кэша системы Linux?


11

Есть ли какая-нибудь команда для получения размера виртуальной памяти, размера кеша и скорости внешней шины системы Linux? Своп в linux такой же, как виртуальная память?


2
своп == виртуальная память
Йоаким Элофссон,

Пожалуйста, дайте характеристики вашего процессора. Откройте BIOS при запуске вашей системы, чтобы определить частоту FSB вашего процессора. Или просто Google модель вашего процессора. Если у вас есть настольный ПК, вы можете открыть корпус и посмотреть на процессор непосредственно, чтобы найти модель.
Jonno_FTW

5
Нет, своп и виртуальная память совершенно разные. Например, при отображении памяти в файл объемом 1 ГБ используется дополнительно 1 ГБ виртуальной памяти, но при этом не происходит никаких изменений в использовании подкачки. Своп - это форма бэк-магазина. Многие виды использования виртуальной памяти не имеют ничего общего с резервным хранилищем. (И были системы с виртуальной памятью и без подкачки, а также системы с подкачкой, но без виртуальной памяти.)
David Schwartz

Виртуальная память = физическая память + пространство подкачки
Пратик Хадлоя

Ответы:


11

Этот вопрос полностью содержится в вашем предыдущем вопросе Как найти размер виртуальной памяти и размер кэша системы Linux? , Как указывалось в моем ответе на этот вопрос, sudo dmidecode --type processorкоманда дает вам скорость «Внешние часы», а скорость FSB кратна (обычно 2 или 4 раза) этой скорости.

Если это не помогло вам, вам следует отредактировать исходный вопрос и сообщить нам, какой вывод вы получили или в чем была ошибка. Чем конкретнее вы, тем лучше другие могут вам помочь.

Как указал специалист The Journeyman, вы можете получить ту же меру «Внешние часы» из значения 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.
июня

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
Waruna Ranasinghe

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» покажет вам использование памяти, включая то, что на самом деле используется против того, что находится в буферах / кэше.

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