久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何進行SWAP知識的理論分析

160次閱讀
沒有評論

共計 4445 個字符,預計需要花費 12 分鐘才能閱讀完成。

如何進行 SWAP 知識的理論分析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

Linux 中的交換空間在物理內存量 (RAM) 已滿時使用。

如果系統需要更多內存資源,并且 RAM 已滿,則內存中的非活動頁面將移動到交換空間。

雖然交換空間可以幫助具有少量 RAM 的計算機,但不應將其視為更多 RAM 的替代品。

交換空間位于硬盤上,硬盤的訪問時間比物理內存慢。交換空間可以是專用交換分區(推薦)、交換文件或交換分區和交換文件的組合。

Linux 內核為了提高讀寫效率與速度,會將文件在內存中進行緩存,這部分內存就是 Cache Memory(緩存內存)。即使你的程序運行結束后,Cache Memory 也不會自動釋放。這就會導致你在 Linux 系統中程序頻繁讀寫文件后,你會發現可用物理內存變少。當用戶提交程序,然后產生進程,在機器上運行,機器會判斷當前物理內存是否還有空閑允許進程調入內存運行,如果有那么則直接調入內存進行運行;如果沒有,那么會根據優先級選擇一個進程掛起,把該進程交換到 swap 中等待,該程序占用的物理內存中的一部分空間就被釋放出來了,然后把新的進程調入到內存中運行。等到那個掛起程序要運行時,再從 Swap 分區中恢復保存的數據到內存中。
但是并不是所有從物理內存中交換出來的數據都會被放到 Swap 中(如果這樣的話,Swap 就會不堪重負),有相當一部分數據被直接交換到文件系統。例如,有的程序會打開一些文件,對文件進行讀寫(其實每個程序都至少要打開一個文件,那就是運行程序本身),當需要將這些程序的內存空間交換出去時,就沒有必要將文件部分的數據放到 Swap 空間中了,而可以直接將其放到文件里去。如果是讀文件操作,那么內存數據被直接釋放,不需要交換出來,因為下次需要時,可直接從文件系統恢復;如果是寫文件,只需要將變化的數據保存到文件中,以便恢復。當物理內存和 swap 都被使用完那么就會報錯 out of memory。

Swap 被使用的日常例子
在使用 Windows 系統時,可以同時運行多個程序,當你切換到一個很長時間沒有理會的程序時,會聽到硬盤“嘩嘩”直響。這是因為這個程序的內存被那些頻繁運行的程序給“偷走”了,放到了 Swap 區中。因此,一旦此程序被放置到前端,它就會從 Swap 區取回自己的數據,將其放進內存,然后接著運行。

Swap 空間的作用
當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的程序被臨時保存到 Swap 空間中,等到那些程序要運行時,再從 Swap 中恢復保存的數據到內存中。從這也可以看出 swap 扮演了一個非常重要的角色,就是暫存被換出的進程。根據這種換入和換出,實現了內存的循環利用,讓用戶感覺不到內存的限制。

Swap 分區對性能的影響
正方:Swap 不能代替物理內存用!因為 swap 畢竟還是以磁盤來偽裝成內存,交換的操作是磁盤 IO 的操作而不是內存的 load 與 store 操作。
反方:正常的情況即物理內存還夠的情況下,很少使用 swap 內存區,物理內存不夠的情況下,swap 空間上存儲的也是系統不會頻繁使用的數據,調用的次數非常少,性能問題幾乎可以忽略,物理內存極度不夠的話,性能問題與 Swap 分區有啥關系,這時你加多數 Swap 分區也無濟于事,只能加物理內存。

使用多大比例內存之后開始使用 swap
可在 /proc/sys/vm/swappiness 文件中進行調整,默認是 60。該參數可以從 0 -100 進行設置。0 就是最大限度使用內存,盡量不使用 swap;100 就是積極使用 swap。A low value means the kernel will try to avoid swapping as much as possible where a higher value instead will make the kernel aggressively try to use swap space

臨時修改 swappiness 參數的方法(不能直接 vi /proc/sys/vm/swappiness),重啟后失效
方法 1:echo 60 /proc/sys/vm/swappiness
方法 2:sysctl vm.swappiness=60

永久修改 swappiness 參數的方法, 重啟后生效
修改 /etc/sysctl.conf 里面的 vm.swappiness,可以直接 vi /etc/sysctl.conf

開啟關閉 swap 交換分區
swapoff /dev/dm-1
swapon /dev/dm-1

swap 交換分區不是 tmpfs 對應的 /dev/shm 分區,而是 swapon - s 對應的 Filename 的分區
[root@localhost ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       4194296 42352   -1
[root@localhost ~]# ll /dev/mapper/VolGroup-lv_swap
lrwxrwxrwx 1 root root 7 6 月  27 10:34 /dev/mapper/VolGroup-lv_swap – ../dm-1
[root@localhost ~]# fdisk -l|grep swap
Disk /dev/mapper/VolGroup-lv_swap: 4294 MB, 4294967296 bytes
[root@localhost ~]# ll /dev|grep dm-1
brw-rw—-   1 root disk    253,   1 6 月  27 10:34 dm-1
[root@localhost ~]# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   35G  3.6G   30G  11% /
tmpfs                         3.9G   72K  3.9G   1% /dev/shm
/dev/sda1                     485M   39M  421M   9% /boot
/dev/sdb1                     197G  100G   87G  54% /db

Swap 大小如何確定
CENTOS 官網采用如下公式:
M = Amount of RAM in GB
S = Amount of swap in GB,
then If M 2, S = M *2 Else S = M + 2。

ORACLE 的官方文檔推薦
RAM                        == Swap Space
Up to 512 MB               == 2 times the size of RAM
Between 1024 MB and 2048 MB== 1.5 times the size of RAM
Between 2049 MB and 8192 MB== Equal to the size of RAM
More than 8192 MB          == 0.75 times the size of RAM

查看 Swap 內存的命令
free 和 swapon - s 和 cat /proc/swaps 三者都可以看到大概的 Swap 信息
swapon - s 和 cat /proc/swaps 還可以看到 Swap 對應的磁盤信息
vmstat 可以看到間隔時間內 Swap in、Swap out 的大小
[root@localhost ~]# free -k|grep Swap
Swap:      4194296      42352    4151944
[root@localhost ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       4194296 42352   -1
[root@localhost ~]#  cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       4194296 42352   -1

[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          7872       6580       1292          0        104       1037
-/+ buffers/cache:       5339       2433
Swap:         4095       3241       854

第二行
total = used + free

第三行
(-buffers/cache) used 內存數:第一部分 Mem 行中的 used – buffers – cached(反映的是被程序實實在在用掉的內存)
(+buffers/cache) free 內存數: 第一部分 Mem 行中的 free + buffers + cached(反映的是可以挪用的內存總數)

第四行
指 SWAP 交換分區

1)如果沒有 swap:
swap 用了 3241M,空閑的物理內存是 2433M,也就是說,如果沒有 swap,內存已經爆了。
2)swap 并沒有影響到性能:
系統還有足夠的物理內存(2433M),換句話說,現在 swap 里存儲的還是不常使用的數據(也就是 swap 正在發揮正常的作用)。

[root@localhost ~]# vmstat 3
procs ———–memory———- —swap– —–io—- –system– —–cpu—–
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0  42352 1322484 209984 6182296    0    0    17    21    4    3  0  0 100  0  0
 0  0  42352 1322484 209984 6182296    0    0     0     0   42   34  0  0 100  0  0
 0  0  42352 1322484 209984 6182296    0    0     0     0   38   36  0  0 100  0  0
 0  0  42352 1322484 209984 6182296    0    0     0     0   61   43  0  0 100  0  0
 0  0  42352 1322484 209984 6182296    0    0     0     0   34   33  0  0 100  0  0

vmstat 3 表示每 3 秒收集一次
si 表示當前(三秒鐘之內) 交換回內存 (Swap in) 的總量,單位為 kbytes;
so 表示當前 (三秒鐘之內) 交換出內存 (Swap out) 的總量,單位為 kbytes。 

看完上述內容,你們掌握如何進行 SWAP 知識的理論分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-03發表,共計4445字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 阿克苏市| 丰顺县| 佛学| 邹平县| 新泰市| 运城市| 北京市| 左权县| 自治县| 双流县| 镇江市| 涞水县| 德昌县| 普兰县| 弋阳县| 乌审旗| 灌阳县| 娱乐| 临西县| 奎屯市| 双辽市| 五家渠市| 青铜峡市| 新沂市| 绥化市| 邓州市| 明水县| 韶关市| 曲靖市| 永嘉县| 松潘县| 南华县| 安溪县| 石渠县| 三门县| 洛川县| 哈密市| 织金县| 神农架林区| 肃宁县| 永兴县|