Bagaimana menemukan ukuran memori virtual dan ukuran cache dari sistem linux?


11

Apakah ada perintah untuk mendapatkan ukuran memori virtual, ukuran cache dan kecepatan bus sisi depan dari sistem linux? Apakah swap di linux sama dengan memori virtual?


2
swap == virtual memory
Joakim Elofsson

Tolong beri spesifikasi CPU Anda. Buka bios dari startup sistem Anda untuk menentukan FSB CPU Anda. Atau hanya google model CPU Anda. Jika Anda memiliki PC desktop, Anda dapat membuka kasing dan melihat cpu langsung untuk menemukan model.
Jonno_FTW

5
Tidak, swap dan memori virtual benar-benar berbeda. Misalnya, pemetaan memori file 1GB menggunakan memori virtual tambahan 1GB tetapi tidak ada perubahan dalam penggunaan swap. Swap adalah bentuk backing store. Banyak penggunaan memori virtual tidak ada hubungannya dengan backing store. (Dan ada sistem dengan memori virtual dan tanpa swap serta sistem dengan swap tetapi tidak ada memori virtual.)
David Schwartz

Memori Virtual = Memori Fisik + Space Swap
Pratik Khadloya

Jawaban:


11

Pertanyaan ini sepenuhnya terkandung dalam pertanyaan Anda sebelumnya. Bagaimana menemukan ukuran memori virtual dan ukuran cache dari sistem linux? . Seperti yang ditunjukkan dalam jawaban saya untuk pertanyaan itu, sudo dmidecode --type processorperintah memberi Anda kecepatan "Jam Eksternal", dan kecepatan FSB adalah kelipatan (biasanya 2 atau 4 kali) dari kecepatan ini.

Jika ini tidak berhasil untuk Anda, Anda harus mengedit pertanyaan awal Anda dan memberi tahu kami hasil yang Anda dapatkan atau kesalahannya. Semakin spesifik Anda, semakin baik orang lain membantu Anda.

Seperti yang ditunjukkan oleh The Journeyman geek, Anda biasanya bisa mendapatkan ukuran "Jam Eksternal" yang sama dari lshw, dalam nilai yang dilaporkan untuk "jam" di ouput terkait cpu.

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

Akhirnya, Anda mungkin menemukan kecepatan clock eksternal dalam output dari dmesg, meskipun ini tidak berarti cara standar untuk mengakses informasi ini. Anda dapat menemukan kecepatan FSB melalui pengaturan BIOS Anda, atau dengan mencari spesifikasi CPU Anda, meskipun ini tidak spesifik linux.


dmidecodehanya berfungsi di x86. Prosesor ARM tidak memiliki perintah, dan sering mengembalikan nilai yang tidak berguna, seperti BogMIPS yang salah.
jww

1
Saya sedikit bingung bagaimana ini diterima. Sepertinya itu hanya menjawab sebagian dari pertanyaan
Gi0rgi0s

Mengapa ini jawaban yang diterima? tidak menyatakan bagaimana menentukan ukuran memori virtual.
jww

10

Ya, swap adalah memori virtual.

Ukuran memori virtual Gunakan swapon -s atau gratis

$ 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

Ukuran cache Dapatkan ini dari / proc / cpuinfo . Kolom " ukuran cache " memberi Anda cache pada CPU. Pada mesin multi-core, Anda akan melihat satu entri per prosesor, dengan nilai cache sendiri.

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

Kecepatan bus sisi depan (FSB) Anda bisa mendapatkan ini dari utilitas dmidecode , dengan argumen prosesor --type . Anda memerlukan izin sudo untuk menjalankan perintah ini. FSB ditunjukkan oleh kecepatan yang dilaporkan untuk " Jam Eksternal ". Kecepatan aktual biasanya 4 kali lipat kecepatan yang dilaporkan, karena banyak instruksi itu dijalankan per siklus clock.

$ 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

Saya punya linux, tidak memiliki dmidecode / lshw perintah
nanas

Distro mana yang Anda jalankan?

Juga, apakah Anda memiliki akses sudo untuk menjalankan perintah ini di mesin?

Format output swapon -s sekarang sudah tidak digunakan lagi. Alih-alih gunakan swapon --show
Waruna Ranasinghe

3

Saya percaya lshw memiliki info itu. Namun tidak semua distro memilikinya (petunjuk- lain kali TOLONG sebutkan apa distro dan versi yang Anda gunakan. Ini sangat membantu. Juga membantu untuk lebih spesifik tentang apa yang Anda lakukan sejauh ini. 'Beberapa perintah seperti' tidak cukup baik)


3

Coba ini di mesin Linux: cat /proc/pal/cpu0/cache_info

Ini akan menunjukkan sesuatu seperti:

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

Coba ulimit -a, di komputer saya itu akan menunjukkan sesuatu seperti:

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

Jalankan free, di mesin saya hasilnya seperti ini:

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

Saya menulis kode ini untuk menguji berapa banyak utas proses yang dapat dibuat:

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

}

Hasilnya seperti ini:

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

Laporan vmstat melaporkan statistik memori virtual, yang memiliki informasi tentang proses, swap, bebas, memori buffer dan cache, ruang paging, aktivitas IO disk, perangkap, interupsi, sakelar konteks, dan aktivitas CPU. Dengan perintah vmstat, administrator dapat memiliki laporan instan tentang penggunaan memori.

Sintaks dari vmstat

vmstat -[options] [delay count]

Contoh penggunaan vmstat

vmstat

Ditemukan di sini


1 sampai, lebih baik daripada solusi saya: D, memberikan info lebih lanjut
monkey_p

2

Perintah "gratis" akan menunjukkan kepada Anda pemanfaatan memori, termasuk apa yang sebenarnya digunakan vs apa yang ada di buffer / cache.

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

Perintah "dmidecode" mungkin memberi Anda wawasan tentang kecepatan FSB.


0
swapon -s

Bidang yang digunakan akan menunjukkan jumlah yang sedang digunakan

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

-1

Ukuran halaman :

$ getconf PAGESIZE

(atau)

$ getconf PAGE_SIZE

Mencoba

swapinfo or swapinfo -a 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.