在linux中,實體記憶體是指系統硬體提供的記憶體大小,是真實的記憶體。 Linux的記憶體管理採取的是分頁存取機制,為了確保實體記憶體能得到充分的利用,核心會在適當的時候將實體記憶體中不常使用的資料區塊自動交換到虛擬記憶體中,而將經常使用的資訊保留到實體記憶體。
本教學操作環境:linux7.3系統、Dell G3電腦。
Linux中的虛擬記憶體和實體記憶體
我們都知道,直接從記憶體讀寫資料要比從硬碟讀寫資料快得多,因此更希望所有資料的讀取和寫入都在記憶體中完成,然而記憶體是有限的,這樣就引出了物理記憶體與虛擬記憶體的概念。
實體記憶體就是系統硬體提供的記憶體大小,是真正的記憶體。相對於實體內存,在 Linux 下還有一個虛擬記憶體的概念,虛擬記憶體是為了滿足物理記憶體的不足而提出的策略,它是利用磁碟空間虛擬出的一塊邏輯記憶體。用作虛擬記憶體的磁碟空間稱為交換空間(又稱 swap 空間)。
作為實體記憶體的擴展,Linux 會在物理記憶體不足時,使用交換分割區的虛擬內存,更詳細地說,就是核心會將暫時不用的記憶體區塊資訊寫到交換空間,這樣一來,實體記憶體得到了釋放,這塊記憶體就可以用於其他目的,當需要用到原始的內容時,這些資訊會被重新從交換空間讀入物理記憶體。
Linux 的記憶體管理採取的是分頁存取機制,為了確保實體記憶體能得到充分的利用,核心會在適當的時候將實體記憶體中不常使用的資料區塊自動交換到虛擬記憶體中,而將經常使用的資訊保留到實體記憶體。
要深入了解Linux 記憶體運行機制,需要知道下面提到的幾個面向:
首先,Linux 系統會不時地進行頁面交換操作,以保持盡可能多的空閒實體內存,即使沒有什麼事情需要內存,Linux 也會交換出暫時不用的內存頁面,因為這樣可以大大節省等待交換所需的時間。
其次,Linux 進行頁面交換是有條件的,不是所有頁面在不用時都交換到虛擬內存,Linux 內核根據“最近最經常使用”演算法,僅僅將一些不經常使用的頁面檔案交換到虛擬記憶體。
有時我們會看到這麼一個現象,Linux 物理記憶體還有很多,但是交換空間也使用了很多,其實這並不奇怪。例如,一個佔用很大內存的進程運行時,需要耗費很多內存資源,此時就會有一些不常用頁面文件被交換到虛擬內存中,但後來這個佔用很多內存資源的進程結束並釋放了很多內存時,剛才被交換出去的頁面檔案並不會自動交換進實體記憶體(除非有這個必要),那麼此時系統物理記憶體就會空閒很多,同時交換空間也在被使用,就出現了剛才所說的現象了。
最後,交換空間的頁面在使用時會首先被交換到物理內存,如果此時沒有足夠的物理內存來容納這些頁面,它們又會被馬上交換出去,如此一來,虛擬內存中可能沒有足夠的空間來儲存這些交換頁面,最終會導致Linux 出現假死機、服務異常等問題。 Linux 雖然可以在一段時間內自行恢復,但恢復後的系統自己基本上不可用了。
因此,合理規劃和設計Linux 記憶體的使用是非常重要的,關於物理記憶體和交換空間的大小設定問題,取決於實際所使用的硬碟大小,但大致遵循這樣一個基本原則:
如果記憶體較小(根據經驗,物理記憶體小於4GB),一般設定swap 分割區大小為記憶體的2 倍;
如果物理記憶體大於4GB,而小於16GB,可以設定swap 分割區大小等於物理記憶體;
#如果記憶體大小在16GB 以上,可以設定swap 為0,但不建議這麼做,因為設定一定大小的swap 分割區是有一定作用的。
Linux系統查看記憶體使用量
Windows及帶有GUI的Linux作業系統中,我們通常可以使用UI來查看系統記憶體及空間使用情況,但是對於開發或維運人員來說,常常要工作在沒有GUI的Linux的伺服器,命令列能比GUI提供更多功能和彈性。
特別當我們的系統中某個應用程式異常,或系統佔用異常,抑或linux開發需要記憶體裁切時,我們就要了解下系統記憶體及空間使用情況,就需要掌握幾個常用的查看工具。
- 查看記憶體使用情況:free
- 顯示進程資訊(包含CPU、記憶體使用等資訊):top、ps
- #查看驅動程式佔用記憶體:lsmod
free
指令可以顯示目前系統未使用的和已使用的記憶體大小,也可以顯示被核心使用的記憶體緩衝區。在終端機中輸入free
(參數稍後說明)可以看到我們伺服器記憶體狀況,如下:
1.1詳細說明如下:
Mem: 記憶體的使用資訊
#Swap: 交換空間的使用資訊
total :總計物理記憶體的大小。
used:已使用實體記憶體。
free:可用實體記憶體。
shared:多個行程共享的記憶體總額。
buffers/cached:快取緩衝使用實體記憶體大小。
available:也可以被應用程式使用的實體記憶體大小。
1.2 各實體記憶體之間的關係式
#total = used free buffer/cache
#avaiable = free buffer/cache(一般來說是這樣,個人電腦是這樣,但伺服器或公有雲一般使用者有部分buffer/cache是用不了的就會有avaiable
1.3 free與available的差異
#free是正在未使用的記憶體
available 是應用程式認為可用的記憶體
Linux為了提升讀寫效能,消耗一部分記憶體資源作為快取或緩衝內存,在核心看來這部分buffer/cache屬於已被使用的內存;在應用程式申請內存,而free內存不夠時,就會讓內核回收buffer和cache來滿足應用程式的內存需求。
1.4buff和cache的差別
buffers和cache是有一定差別的:
- A buffer is something that has yet to be “written” to disk. —buffer 寫緩存,數據存儲時,先保存到磁碟緩衝區,然後再寫入到永久空間
- A cache is something that has been “ reed” from the disk adn stored for later use. --cache 讀緩存,資料從磁碟讀出後,暫留在緩衝區,預備程式接下來的使用。
1.5 free參數說明
#free指令下顯示的單位是k,可以在free後面加上-m(即free -m
)顯示單位為Mb,如下圖:
可以透過free --help
查看free的詳細指令:
透過free -h可以自動搭配適合人閱讀習慣的單位,其中h是humanity之意。
ps:
第3行swap為交換分區,類似windows系統中的虛擬內存,當記憶體不足的時候,把一部分硬碟空間虛擬成內存使用,從而解決內存容量不足的情況。
- #top指令可以即時動態地檢視系統的整體運作情況,是一個綜合了多方資訊監測系統性能和運作資訊的實用工具。透過top指令可以有效的發現系統的缺陷出在哪裡,例如記憶體不夠、CPU處理能力不夠、IO讀寫過高等。透過top指令所提供的互動式介面,用熱鍵可以管理。
相關語法:top -X
-b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。
- #在top指令執行過程中可以使用的一些互動指令。這些命令都是單字母的,如果在命令列中使用了-s選項, 其中一些命令可能會被封鎖。交互指令如下:
h:显示帮助画面,给出一些简短的命令总结说明; k:终止一个进程; i:忽略闲置和僵死进程,这是一个开关式命令; q:退出程序; r:重新安排一个进程的优先级别; S:切换到累计模式; s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s; f或者F:从当前显示中添加或者删除项目; o或者O:改变显示项目的顺序; l:切换显示平均负载和启动时间信息; m:切换显示内存信息; t:切换显示进程和CPU状态信息; c:切换显示命令名称和完整命令行; M:根据驻留内存大小进行排序; P:根据CPU使用百分比大小进行排序; T:根据时间/累计时间进行排序; w:将当前设置写入~/.toprc文件中。
直接在終端機中輸入top指令,可以看到下列介面
2.1 top命令的第一到第五行的详细说明如下:
top - 10:14:31 当前系统时间
up 3 days, 22:36 系统已经运行了3天22h36min
1 users 共有1个用户为登录状态
load average: 0.57, 0.74, 0.65 系统负载,即任务队列的平均长度,load average后面的三个数字分别表示距离现在一分钟,五分钟,十五分钟的负载情况。
注意:load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
Tasks: 322 total 总进程数
2 running 正在运行的进程数
320 sleeping 睡眠的进程数
0 stopped 停止的进程数
0 zombie 冻结进程数
%Cpu(s): 2.7 us, 用户空间占用CPU百分比(用户态使用CPU占比)
2.7 sy 内核空间占用CPU百分比 (系统态使用CPU占比)
0.0 ni 用做nice加权的进程分配的用户态cpu时间比
94.0 id 空闲的cpu时间比
0.0 wa IO wait ,cpu等待磁盘写入完成时间
0.0 hi Hardware IRQ,硬中断消耗时间
0.0 si Software IRQ,软中断消耗时间
0.7 st 被hypervisor(管理程序,一般为服务器或者虚拟机)偷取时间
MiB Mem : 11995.2 total 物理内存总量,单位:Mb
360.9 free 空闲内存总量
6766.0 used 使用的物理内存总量,此处需要注意的是:used实际指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
4868.3+buff/cache 用作内核缓存的内存量
MiB Swap: 7680.0 total 交换区总量
7433.1 free 空闲交换区总量
246.9 used 使用的交换区总量
3665.4 avail Mem 在不交换的情况下,对启动新应用程序可用内存的估计
(网上也有说法是交换区的可用容量)
top命令第六行为空。
top命令第七行是各个进程的监控:
从左到右依次为:
PID — 进程id USER — 进程所有者 PR — 进程优先级 NI — nice值。负值表示高优先级,正值表示低优先级 VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR — 共享内存大小,单位kb S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 %CPU — 上次更新到现在的CPU时间占用百分比 %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 COMMAND — 进程名称(命令名/命令行)
需要注意的是,此界面显示的并不是所有进程,由于页面显示限制仅仅显示了这几行,我们可以通过top -b -n 1
查看系统的所有进程的快照。
命令:cat /proc/meminfo
注:initrd和初始化代码init在引导完成之后会被释放掉,所以最终的内核可管理内存(total)会比dmesg显示的available更多一点,相应的源代码可参见: free_initrd_mem() 和 free_initmem()。
优化可以主要从优化保留内存和优化used内存两个方面进行,具体的需要结合代码。
查看磁盘命令比较多,最常用的为: df -lh
命令
4 lsmod查看驱动占用内存
命令:lsmod
- 功能:
列出已加载的模块,以友好的方式显示/proc/modules的内容 - 格式:
第一列:Module表示模块的名称,如sysDebug
第二列:Size表示模块大小,单位:byte
第三列:Used 表示依赖的模块个数
第四列:by表示依赖的模块内容 - 示例:
lsmod|grep -i ext3 //查看当前系统是否加载ext3驱动模块
相关推荐:《Linux视频教程》
以上是linux物理記憶體是指什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Linux的維護模式可以通過GRUB菜單進入,具體步驟為:1)在GRUB菜單中選擇內核並按'e'編輯,2)在'linux'行末添加'single'或'1',3)按Ctrl X啟動。維護模式提供了一個安全環境,適用於系統修復、重置密碼和系統升級等任務。

進入Linux恢復模式的步驟是:1.重啟系統並按特定鍵進入GRUB菜單;2.選擇帶有(recoverymode)的選項;3.在恢復模式菜單中選擇操作,如fsck或root。恢復模式允許你以單用戶模式啟動系統,進行文件系統檢查和修復、編輯配置文件等操作,幫助解決系統問題。

Linux的核心組件包括內核、文件系統、Shell和常用工具。 1.內核管理硬件資源並提供基本服務。 2.文件系統組織和存儲數據。 3.Shell是用戶與系統交互的接口。 4.常用工具幫助完成日常任務。

Linux的基本結構包括內核、文件系統和Shell。 1)內核管理硬件資源,使用uname-r查看版本。 2)EXT4文件系統支持大文件和日誌,使用mkfs.ext4創建。 3)Shell如Bash提供命令行交互,使用ls-l列出文件。

Linux系統管理和維護的關鍵步驟包括:1)掌握基礎知識,如文件系統結構和用戶管理;2)進行系統監控與資源管理,使用top、htop等工具;3)利用系統日誌進行故障排查,借助journalctl等工具;4)編寫自動化腳本和任務調度,使用cron工具;5)實施安全管理與防護,通過iptables配置防火牆;6)進行性能優化與最佳實踐,調整內核參數和養成良好習慣。

Linux維護模式通過在啟動時添加init=/bin/bash或single參數進入。 1.進入維護模式:編輯GRUB菜單,添加啟動參數。 2.重新掛載文件系統為讀寫模式:mount-oremount,rw/。 3.修復文件系統:使用fsck命令,如fsck/dev/sda1。4.備份數據並謹慎操作,避免數據丟失。

本文探討如何在Debian系統上提升Hadoop數據處理效率。優化策略涵蓋硬件升級、操作系統參數調整、Hadoop配置修改以及高效算法和工具的運用。一、硬件資源強化確保所有節點硬件配置一致,尤其關注CPU、內存和網絡設備性能。選擇高性能硬件組件對於提升整體處理速度至關重要。二、操作系統調優文件描述符和網絡連接數:修改/etc/security/limits.conf文件,增加系統允許同時打開的文件描述符和網絡連接數上限。 JVM參數調整:在hadoop-env.sh文件中調整

本指南將指導您學習如何在Debian系統中使用Syslog。 Syslog是Linux系統中用於記錄系統和應用程序日誌消息的關鍵服務,它幫助管理員監控和分析系統活動,從而快速識別並解決問題。一、Syslog基礎知識Syslog的核心功能包括:集中收集和管理日誌消息;支持多種日誌輸出格式和目標位置(例如文件或網絡);提供實時日誌查看和過濾功能。二、安裝和配置Syslog(使用Rsyslog)Debian系統默認使用Rsyslog。您可以通過以下命令安裝:sudoaptupdatesud


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具