Memory

-/+ 緩衝區/記憶體和交換

  • March 14, 2016

什麼時候應該開始使用交換?或者

我怎麼知道我的交換正在被使用?考慮到預設的交換性,至少有時(如果不是總是)60

另外,為什麼要省略緩衝區/記憶體行,不free應該考慮嗎?我總是提到 justfree -got的輸出。

我的記憶體統計數據如下,根本沒有看到交換被使用過。緩衝區/記憶體有什麼可做的嗎?

-bash-3.2$ free -mt
            total       used       free     shared    buffers     cached
Mem:         64458      24419      40039          0         38        212
-/+ buffers/cache:      24167      40290
Swap:        16386          0      16386
Total:       80845      24419      56425

swappiness 值是預設值。

cat /proc/sys/vm/swappiness
60

需要知道這些,因為我遇到過使用所有62Gigs RAM 的情況。

請賜教。

我怎麼知道我的交換正在被使用?

根本沒有見過交換被使用的情況。

嘗試創建記憶體壓力以使 Linux 頁面換出頁面。在我的系統上,swap 也是 0。然後我執行stress --vm 30. 以下是關於壓力的幫助:

$ stress --help
`stress' imposes certain types of compute stress on your system

Usage: stress [OPTION [ARG]] ...
....
-m, --vm N         spawn N workers spinning on malloc()/free()
    --vm-bytes B   malloc B bytes per vm worker (default is 256MB)
    --vm-stride B  touch a byte every B bytes (default is 4096)
    --vm-hang N    sleep N secs before free (default none, 0 is inf)
    --vm-keep      redirty memory instead of freeing and reallocating

30 個實例strees導致記憶體壓力和 Linux 啟動分頁頁面,從vmstat 1. 見so專欄:

man vmstat:
  Swap
      si: Amount of memory swapped in from disk (/s).
      so: Amount of memory swapped to disk (/s).

vmstat 報告:

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
98  0  0    
0  0      0 3355728 112016 2052000    0    0     0     0  287  335  3  1 96  0  0  
30  0      0 358472 112016 2052000    0    0     0     0 1575 1012  7 74 19  0  0   
14 33 141588  99032  60252 1578948  268 141764   404 142080 6896 3249  3 93  0  4  0    
31 24 302632  98664  17208 1020240 8280 165008  8308 165236 5686 4114  5 76  0 20  0    
11 22 494516  98732   4208 615496 3112 191952 11552 192060 5494 5199  2 64  1 33  0 

使用的交換變得足夠大:

            total   used       free     shared    buffers     cached
Mem:          7228   1411       5816          0         23        171
-/+ buffers/cache:   1217       6011
Swap:         4647        824       3823
Total:       11876   2236       9640

引用自:https://unix.stackexchange.com/questions/269668