自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在 Linux 上用 zram 替代傳統(tǒng)交換空間

系統(tǒng) Linux
zram 是一個(gè)用于創(chuàng)建內(nèi)存壓縮緩存的工具,特別是可以用作交換空間。

我在我的電腦上花了很多時(shí)間(我是說工作),我發(fā)現(xiàn)了很多有趣的東西。其中最近引起我注意的是 ??zram0??? 設(shè)備。我是在幾個(gè)月前寫一篇文章時(shí)第一次注意到它,它顯示在 ??lsblk?? 命令的輸出中:

# lsblkNAME          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTSsda             8:0    0 931.5G  0 disk├─sda1          8:1    0   600M  0 part[...]zram0         252:0    0     8G  0 disk [SWAP]

它被識(shí)別為交換空間,這就是首先引起我的好奇心的原因,所以我做了一些研究。zram 最初被稱為 “壓縮緩存compcache”,即 “壓縮的高速緩存”。事實(shí)證明,zram 是一個(gè)用于創(chuàng)建內(nèi)存內(nèi)壓縮緩存的工具,特別是作為交換空間使用。

但為什么呢?

當(dāng)我開始研究 zram 時(shí),我只發(fā)現(xiàn)了幾篇關(guān)于將 zram 用于交換空間的基礎(chǔ)文章。起初,這對(duì)我來說似乎有點(diǎn)違反直覺。畢竟,如果你的內(nèi)存快用完了,你把頁面交換到內(nèi)存中的虛擬驅(qū)動(dòng)器中,有什么好處呢?

然后我找到了 Fedora 項(xiàng)目的維基頁面,它提議使用 ??zram 交換空間??swap-on-zram。該建議說:“交換是有用的,除了它的速度很慢。zram 是一個(gè)使用了壓縮的內(nèi)存驅(qū)動(dòng)器。在啟動(dòng)時(shí)創(chuàng)建一個(gè) zram 交換空間,并且不再使用默認(rèn)的交換分區(qū)?!?/p>

該頁面的其余部分是關(guān)于它的細(xì)節(jié)、好處、副作用和反饋。

Linux 上用于交換空間的 zram

使用 zram 作為交換空間,與常規(guī)的基于分區(qū)或基于文件的交換空間做的事情相同。當(dāng)內(nèi)存壓力過大時(shí),一些最近使用最少的數(shù)據(jù)會(huì)被移到交換空間。平均來說,它會(huì)被壓縮到其原始大小的 50% 左右,并被放置在內(nèi)存的 zram 空間中。這比將這些內(nèi)存頁存儲(chǔ)在硬盤上要快得多,并可以釋放出它所使用的內(nèi)存用于其他用途。

節(jié)省交換空間

我試圖找到關(guān)于配置多少交換空間或 zram 交換空間的總結(jié)建議。這使我重新回顧了交換空間的設(shè)置,以及我之前的文章《??現(xiàn)代 Linux 系統(tǒng)的正確交換空間是多少???》。就我所知,從 RHEL 和 Fedora 的最新文檔來看,推薦的交換空間數(shù)量并沒有改變。不過,該文檔忽略了 zram 的使用。

然而,在不使用 zram 的舊版 Linux 或 zram 被禁用的情況下,之前文章中的表格仍然為交換空間的分配提供了一個(gè)好的起點(diǎn)。

我找到的關(guān)于 zram 功能的文檔在 zram 如何根據(jù)內(nèi)存大小分配空間,以及分配給 zram 交換空間的數(shù)量方面是不一致的。

由于缺乏權(quán)威性的文檔,我進(jìn)行了一些實(shí)驗(yàn)來憑經(jīng)驗(yàn)確定用于分配 zram 交換空間的算法。我為此使用了我自己的物理和虛擬系統(tǒng)。結(jié)果很有趣,與我迄今為止發(fā)現(xiàn)的任何文檔都不一致。

在所有足夠大的系統(tǒng)上,zram 的默認(rèn)大小是 8GB,但在內(nèi)存較小的主機(jī)上通常會(huì)大大減少。在我用于測(cè)試的一臺(tái)虛擬機(jī)(VM)上,可以訪問 4GB 的內(nèi)存,zram 的虛擬交換空間被分配為 3.8GB。我的一臺(tái)舊戴爾電腦擁有 8GB 的內(nèi)存,zram 被設(shè)置為 7.6GB。當(dāng)內(nèi)存減少到 2GB 時(shí),zram 就減少到 1.9GB。

我擁有的所有內(nèi)存超過 8GB 的物理和虛擬主機(jī)都顯示正好是 8GB 的 zram。這包括我擁有 64GB 內(nèi)存的主工作站和其他擁有 16GB 或 32GB 內(nèi)存的主機(jī)。

基于這幾個(gè)數(shù)據(jù)點(diǎn),我可以得出這樣的結(jié)論:目前的默認(rèn)設(shè)置是最多 8GB 的 zram,而在 8GB 或以下的主機(jī)上,zram 占內(nèi)存的 95%。

我讀過一些文章,其中提到了 zram 交換空間的其他大小,甚至高達(dá) 100% 的內(nèi)存,但這些似乎都是理論上的,而不是現(xiàn)實(shí)。

你的發(fā)行版可能不同,但這里是 Fedora 和類似發(fā)行版的實(shí)際 zram 交換空間的分配情況:

  • 內(nèi)存 ? 8 GB:0.95 × 內(nèi)存
  • 內(nèi)存 > 8 GB:8 GB

請(qǐng)注意,zram 交換空間大小的算法并沒有基于對(duì)任何給定的現(xiàn)實(shí)世界的系統(tǒng)或應(yīng)用程序的 “最佳” 交換大小的建議。這種 zram 交換空間的分配是一種相當(dāng)概率性的方法,它應(yīng)該在廣泛的 Linux 主機(jī)上運(yùn)行良好。然而,最大的 zram 交換空間大小被配置為 8GB,而且我一直推薦 8GB 作為傳統(tǒng)交換空間的最大容量,我想我可以說它反映了 zram 交換空間的最佳大小。

管理 zram 交換空間

zram 的默認(rèn)值保存在 ??/usr/lib/systemd/zram-generator.conf?? 配置文件中。以下是我的一個(gè)測(cè)試虛擬機(jī),分配了 5097GB 的內(nèi)存。

# cat /usr/lib/systemd/zram-generator.conf# This config file enables a /dev/zram0 device with the default settings:# - size - same as available RAM or 8GB, whichever is less# - compression - most likely lzo-rle## To disable, uninstall zram-generator-defaults or create empty# /etc/systemd/zram-generator.conf file.[zram0]zram-size= min(ram, 8192)

你可以在 ??zram-generator.conf?? 配置文件的最后一行改變默認(rèn)的 zram 交換空間大小。但我建議不要這樣做,除非你能明確說明這樣做的原因,并在你做任何改變后測(cè)試你的結(jié)果。像 Linux 中的許多其他配置默認(rèn)值一樣,zram 的默認(rèn)值已經(jīng)被很好地測(cè)試過了,適合大多數(shù)使用情況。

監(jiān)控 zram

可以使用 ??zramctl?? 工具來查看 zram 的當(dāng)前狀態(tài)。

# zramctlNAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT/dev/zram0 lzo-rle       4.8G   4K   80B   12K       4[SWAP]

傳統(tǒng)的 ??swapon?? 命令也可以用來查看交換,包括作為交換使用的 zram:

# swapon --showNAME       TYPE      SIZE USED PRIO/dev/zram0 partition 4.8G   0B  100

需要注意的是,??zramctl?? 在不包含數(shù)據(jù)時(shí)不報(bào)告 zram,所以結(jié)果會(huì)包含空輸出。而像 ??lsblk??、??swapon??、 ??top??、??free??、??htop?? 等工具,即使不包含數(shù)據(jù),也會(huì)顯示 zram。

停用 zram

??swapoff -a?? 命令會(huì)關(guān)閉 zram 交換空間以及用作交換的傳統(tǒng) HDD 或 SSD 存儲(chǔ)。??swapon -a?? 命令在 zram 為空時(shí)不顯示它,可以使用 ??zramctl /dev/zram0?? 代替。

# swapon --show# lsblkNAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTSsda             8:00  120G  0 disk├─sda1          8:10    1G  0 part /boot/efi├─sda2          8:20    1G  0 part /boot└─sda3          8:30  118G  0 part  ├─vg01-root 253:00   10G  0 lvm  /  ├─vg01-swap 253:10    3G  0 lvm  [SWAP]  ├─vg01-usr  253:10   30G  0 lvm  /usr  ├─vg01-home 253:20   10G  0 lvm  /home  ├─vg01-var  253:30   30G  0 lvm  /var  └─vg01-tmp  253:40   10G  0 lvm  /tmpsr0            11:01 1024M  0 romzram0         252:00    0B  0 disk# zramctl## zramctl /dev/zram0NAME       ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT/dev/zram0 lzo-rle         0B   0B    0B    0B       4

注意,??/dev/zram0?? 在這些命令中并沒有顯示為交換空間,直到它被用于該目的。這給我造成了一些困惑,直到我的實(shí)驗(yàn)表明這是事實(shí)。

創(chuàng)建 zram 交換空間

zram 本身已經(jīng)存在了大約 20 年,但只是在過去的一兩年里才在一些發(fā)行版上作為交換空間使用。你的一些或所有主機(jī)上當(dāng)前的 Linux 環(huán)境可能沒有用 zram 創(chuàng)建交換空間。如果是這種情況,它可以很容易地被補(bǔ)救。

對(duì)于 Fedora 32,它是默認(rèn)使用 zram 交換空間之前的最后一個(gè)版本,它只需要三個(gè)簡單的命令。

首先,驗(yàn)證是否存在 ??zram-swap.service?? 文件,它作為 ??zram?? RPM 包的一部分安裝:

# systemctl status zram-swap● zram-swap.service - Enable compressed swap in memory using zram     Loaded: loaded (/usr/lib/systemd/system/zram-swap.service; disabled; vendor preset: disabled)     Active: inactive (dead)

接下來,安裝 ??zram-generator-defaults?? 和 ??zram-generator?? 軟件包:

# dnf install zram-generator-defaults zram-generator

啟用并啟動(dòng) ??zram-swap?? 服務(wù):

# systemctl enable zram-swap.service# systemctl start zram-swap.service

然后驗(yàn)證 ??zram0?? 是否存在并被用作交換空間:

# lsblkNAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsda             8:00  120G  0 disk├─sda1          8:10    2G  0 part /boot└─sda2          8:20  118G  0 part  ├─vg01-root 253:00   10G  0 lvm  /  ├─vg01-swap 253:10    3G  0 lvm  [SWAP]  ├─vg01-usr  253:20   35G  0 lvm  /usr  ├─vg01-tmp  253:30   15G  0 lvm  /tmp  ├─vg01-var  253:40   35G  0 lvm  /var  └─vg01-home 253:50   20G  0 lvm  /homesr0            11:01 1024M  0 romzram0         252:00  7.5G  0 disk [SWAP]

用 zram 改進(jìn)交換空間

這就是全部內(nèi)容了。在 Fedora 上這很容易。不同的發(fā)行版可能也一樣簡單,只是軟件包名稱和命令的細(xì)節(jié)可能不同。在你的電腦上試試 zram 交換空間吧。在我的下一篇文章中,我將進(jìn)一步演示一些 zram 選項(xiàng)。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2015-06-19 11:04:29

linux運(yùn)維

2015-06-16 10:41:57

Linux清除內(nèi)存Buffer

2021-07-12 17:45:25

LinuxTealdeer手冊(cè)頁

2021-06-29 06:39:21

Linuxdust命令du命令

2021-12-03 15:04:06

FlatpakLinux

2022-01-09 15:00:16

LinuxAudacity聲音編輯器

2023-05-11 13:55:00

LinuxKdenlive編輯視頻

2023-02-13 15:03:33

JDKJavaHotSpot

2018-10-15 10:32:10

Linux操作系統(tǒng)命令

2020-10-27 11:00:57

LinuxRAM緩存

2021-10-08 14:14:03

jconsoleJavaLinux

2021-12-12 09:34:12

Linux轉(zhuǎn)換音頻SoundConver

2022-02-28 09:24:17

KWriteKateLinux

2022-03-06 20:24:50

音樂播放器Juk開源

2019-08-01 09:35:09

LinuxBashmessages

2019-11-07 15:02:00

Linuxstrace系統(tǒng)調(diào)用

2021-07-18 11:43:58

Linux密碼加密

2023-09-26 10:52:38

LinuxDoxygen

2021-04-24 06:26:43

SigilLinux EPUB文件
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)