Làm thế nào để tìm kích thước bộ nhớ ảo và kích thước bộ đệm của hệ thống linux?


10

Có lệnh nào để có được kích thước bộ nhớ ảo, kích thước bộ đệm và tốc độ bus phía trước của hệ thống linux không? Là trao đổi trong linux giống như bộ nhớ ảo?


2
trao đổi == bộ nhớ ảo
Joakim Elofsson

Vui lòng cung cấp thông số kỹ thuật của CPU của bạn. Mở bios từ khi khởi động hệ thống của bạn để xác định FSB của CPU. Hoặc chỉ cần google mô hình CPU của bạn. Nếu bạn có một máy tính để bàn, bạn có thể mở vỏ máy và nhìn trực tiếp vào cpu để tìm model.
Jonno_FTW

4
Không, trao đổi và bộ nhớ ảo là hoàn toàn khác nhau. Ví dụ: ánh xạ bộ nhớ tệp 1GB sử dụng thêm 1GB bộ nhớ ảo nhưng không có thay đổi trong việc sử dụng trao đổi. Hoán đổi là một hình thức của cửa hàng sao lưu. Nhiều cách sử dụng bộ nhớ ảo không liên quan gì đến cửa hàng sao lưu. (Và đã có các hệ thống có bộ nhớ ảo và không có trao đổi cũng như các hệ thống có trao đổi nhưng không có bộ nhớ ảo.)
David Schwartz

Bộ nhớ ảo = Bộ nhớ vật lý + Không gian hoán đổi
Pratik Khadloya 24/07/17

Câu trả lời:


11

Câu hỏi này hoàn toàn có trong câu hỏi trước của bạn Làm thế nào để tìm kích thước bộ nhớ ảo và kích thước bộ đệm của hệ thống linux? . Như đã chỉ ra trong câu trả lời của tôi cho câu hỏi đó, sudo dmidecode --type processorlệnh cung cấp cho bạn tốc độ "Đồng hồ bên ngoài" và tốc độ FSB là bội số (thường là 2 hoặc 4 lần) của tốc độ này.

Nếu điều này không phù hợp với bạn, bạn nên chỉnh sửa câu hỏi ban đầu của mình và cho chúng tôi biết kết quả bạn nhận được hoặc lỗi là gì. Bạn càng cụ thể, người khác càng có thể giúp bạn.

Như được chỉ ra bởi The Journeyman geek, bạn thường có thể có cùng số đo "Đồng hồ bên ngoài" từ lshw, trong giá trị được báo cáo cho "đồng hồ" trong thông số liên quan đến 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

Cuối cùng, bạn có thể tìm thấy tốc độ xung nhịp bên ngoài ở đầu ra dmesg, mặc dù điều này không có nghĩa là một cách tiêu chuẩn để truy cập thông tin này. Bạn có thể tìm thấy tốc độ FSB thông qua các cài đặt BIOS của bạn hoặc bằng cách tra cứu thông số CPU của bạn, mặc dù đây không phải là linux cụ thể.


dmidecodechỉ hoạt động trên x86. Bộ xử lý ARM không có lệnh và thường trả về các giá trị vô dụng, như BogMIPS không chính xác.
jww

Tôi hơi bối rối khi làm thế nào điều này được chấp nhận. Có vẻ như nó chỉ trả lời một phần của câu hỏi
Gi0rgi0s

10

Vâng, trao đổi là bộ nhớ ảo.

Kích thước bộ nhớ ảo Sử dụng hoán đổi -s hoặc miễn phí

$ 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

Kích thước bộ đệm Lấy cái này từ / Proc / cpuinfo . Trường " kích thước bộ đệm " cung cấp cho bạn bộ đệm trên CPU. Trên các máy đa lõi, bạn sẽ thấy một mục nhập cho mỗi bộ xử lý, với giá trị bộ đệm riêng.

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

Tốc độ bus phía trước (FSB) Bạn có thể lấy điều này từ tiện ích dmidecode , với đối số bộ xử lý --type . Bạn cần có quyền sudo để chạy lệnh này. FSB được biểu thị bằng tốc độ được báo cáo cho " Đồng hồ ngoài ". Tốc độ thực tế thường gấp 4 lần tốc độ được báo cáo, vì nhiều hướng dẫn đó được thực thi trên mỗi chu kỳ đồng hồ.

$ 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

Tôi có linux, nó không có lệnh dmidecode / lshw
dứa

Bạn đang chạy distro nào?
nagul

Ngoài ra, bạn có quyền truy cập sudo để chạy các lệnh này trên máy không?
nagul

định dạng đầu ra của hoán đổi hiện không được chấp nhận. Thay vào đó, hãy sử dụng
hoán

3

Tôi tin rằng lshw có thông tin đó. Tuy nhiên, không phải tất cả các bản phân phối đều có (gợi ý - lần sau, hãy đề cập đến bản phân phối và phiên bản bạn sử dụng. Nó giúp ích rất nhiều. Cũng giúp cụ thể về những gì bạn đã làm cho đến nay. '


3

Hãy thử điều này trên máy Linux: cat /proc/pal/cpu0/cache_info

Điều này sẽ hiển thị một cái gì đó như:

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

Hãy thử ulimit -a, trên máy của tôi, nó sẽ hiển thị một cái gì đó như:

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

Chạy free, trên máy của tôi kết quả là như thế này:

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

Tôi đã viết mã này để kiểm tra có bao nhiêu luồng mà một quá trình có thể tạo:

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

}

Kết quả là như thế này:

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

báo cáo vmstat báo cáo thống kê bộ nhớ ảo, có thông tin về các quá trình, trao đổi, miễn phí, bộ nhớ đệm và bộ nhớ cache, không gian phân trang, hoạt động IO của đĩa, bẫy, ngắt, chuyển đổi ngữ cảnh và hoạt động của CPU. Với lệnh vmstat, quản trị viên có thể có báo cáo tức thời về việc sử dụng bộ nhớ.

Cú pháp của vmstat

vmstat -[options] [delay count]

Ví dụ sử dụng của vmstat

vmstat

Tìm thấy ở đây


1 lên, tốt hơn giải pháp của tôi: D, cung cấp thêm thông tin
khỉ_p

2

Lệnh "miễn phí" sẽ hiển thị cho bạn sử dụng bộ nhớ, bao gồm cả những gì thực sự được sử dụng so với những gì trong bộ đệm / bộ đệm.

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

Lệnh "dmidecode" có thể cung cấp cho bạn cái nhìn sâu sắc về tốc độ của FSB.


0
swapon -s

Trường được sử dụng sẽ cho biết số tiền hiện đang sử dụng

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

0

Kích thước trang:

$ getconf PAGESIZE

(hoặc là)

$ getconf PAGE_SIZE

Thử

swapinfo or swapinfo -a 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.