Linux では、物理メモリとは、システム ハードウェアによって提供されるメモリ サイズ (実メモリ) を指します。 Linux のメモリ管理にはページング アクセス メカニズムが採用されており、物理メモリを最大限に活用するために、カーネルは適切なタイミングで物理メモリ内の使用頻度の低いデータ ブロックを仮想メモリに自動的にスワップし、頻繁に使用されるデータ ブロックは自動的にスワップされます。情報は適切なタイミングで仮想メモリに保存され、情報は物理メモリに保持されます。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
メモリから直接データを読み書きする方が、ハードウェアからデータを読み書きするよりもはるかに高速であることは誰もが知っています。したがって、データの読み書きはすべてメモリ上で完結することが望ましいのですが、メモリには限界があるため、物理メモリと仮想メモリという概念が生まれます。
物理メモリは、システム ハードウェアによって提供されるメモリ サイズであり、実メモリです。物理メモリと比較して、Linux では仮想メモリという概念もあります。仮想メモリは、物理メモリの不足を補うために提案された戦略であり、ディスク領域を使用して仮想化された論理メモリです。仮想メモリとして使用されるディスク領域は、スワップ領域 (スワップ領域とも呼ばれます) と呼ばれます。
Linux は、物理メモリの拡張として、物理メモリが不足した場合に、スワップ パーティションの仮想メモリを使用します (具体的には、カーネルは一時的に未使用のメモリ ブロック情報をスワップ領域に書き込みます)。 、物理メモリが解放され、このメモリは他の目的に使用できます。元のコンテンツが必要な場合、情報はスワップ スペースから物理メモリに再度読み取られます。
Linux のメモリ管理はページング アクセス メカニズムを採用しており、物理メモリを最大限に活用できるようにするため、カーネルは物理メモリ内の使用頻度の低いデータ ブロックを適切なタイミングで仮想メモリに自動的にスワップし、頻繁に保持します。使用された情報を物理メモリに保存します。
Linux のメモリ操作メカニズムを深く理解するには、次の点を理解する必要があります。
まず、Linux システムはページ スワップ操作を実行します。メモリを必要とするものがない場合でも、Linux は一時的に未使用のメモリ ページをスワップアウトします。これにより、スワップの待機時間を大幅に節約できるためです。
第 2 に、Linux のページ スワッピングは条件付きです。使用されていないときにすべてのページが仮想メモリにスワップされるわけではありません。Linux カーネルは、「最近のページ」に基づいて、使用されていない一部のページのみをスワップします。 used" アルゴリズム。頻繁に使用されるページ ファイルは仮想メモリにスワップされます。
このような現象は時々見られますが、Linux には依然として多くの物理メモリがありますが、多くのスワップ領域も使用されています。実際、これは驚くべきことではありません。たとえば、多くのメモリ リソースを占有するプロセスが実行中に大量のメモリ リソースを消費すると、使用頻度の低いページ ファイルの一部が仮想メモリにスワップされますが、その後、多くのメモリ リソースを占有するプロセスが終了し、大量のメモリが解放されます。この時点では、スワップアウトされたばかりのページ ファイルは (必要な場合を除いて) 自動的に物理メモリにスワップされず、この時点でシステムの物理メモリはかなり空いており、スワップスペースも使用されており、上記の問題が発生する現象が発生します。
最後に、スワップ スペース内のページは、使用時に最初に物理メモリにスワップされます。この時点でこれらのページを収容するのに十分な物理メモリがない場合、ページはすぐにスワップアウトされます。このようにして、仮想メモリ これらのスワップ ページを保存するのに十分なスペースがシステムにない可能性があり、最終的に Linux のクラッシュ、サービスの異常、その他の問題が発生します。 Linux は一定期間内に自動的に復元できますが、復元されたシステムは基本的に使用できなくなります。
したがって、Linux メモリの使用を合理的に計画および設計することが非常に重要です。物理メモリとスワップ領域のサイズ設定に関しては、実際に使用されるハードディスクのサイズによって異なりますが、通常はこの基本原則に従います。 :
メモリが小さい場合 (経験によれば、物理メモリは 4GB 未満です)、通常はスワップ パーティション サイズをメモリの 2 倍に設定します。
メモリ使用量を表示する Linux システム
コマンドは、現在のシステムの未使用および使用済みメモリ サイズを表示でき、カーネルによって使用されているメモリ バッファも表示できます。次のように、ターミナルに free
と入力して (パラメータについては後で説明します)、サーバーのメモリ状態を確認します。
: メモリ使用量情報 ##Swap: スワップ領域使用量情報
total
used: 物理メモリが使用されました。
free: 利用可能な物理メモリ。
shared: 複数のプロセスによって共有されるメモリの合計量。
buffers/cached: キャッシュ バッファーは物理メモリ サイズを使用します。
available: アプリケーションでも使用できる物理メモリのサイズ。
(一般的に言えば、これはパーソナル コンピュータに当てはまりますが、サーバーやパブリック クラウドの一般ユーザーが使用できないバッファ/キャッシュを持っている場合は、使用可能な
1.3 無料と利用可能なの違い
は、アプリケーションが利用可能であるとみなすメモリです。 読み取りおよび書き込みのパフォーマンスを向上させるために、Linux はメモリ リソースの一部をキャッシュまたはバッファ メモリとして消費します。カーネルの観点からは、この部分は buffer/cache
は使用済みメモリに属します。メモリ; アプリケーションがメモリを申請し、空きメモリが十分ではない場合、カーネルはアプリケーションのメモリのニーズを満たすためにバッファとキャッシュをリサイクルします。
1.4 バッファとキャッシュの違い
キャッシュとは何かこれは、ディスクから「リード」され、後で使用するために保存されています。 --cache 読み取りキャッシュ。データはディスクから読み取られた後、プログラムによるその後の使用に備えて一時的にバッファーに保管されます。
free の詳細なコマンドは、free --help
を通じて表示できます: free -h を使用して、人々の読書習慣に適した単位を自動的に一致させることができます。ここで、h は
humanity
を意味します。
ps: 行 3
swap はスワップ パーティションであり、Windows システムの仮想メモリに似ています。ハードディスク容量の一部をメモリ使用量として仮想化することで、メモリ容量不足の問題を解決します。
先頭のコマンドは、操作全体を動的に表示できます。システムのパフォーマンスと運用情報を監視するマルチパーティ情報を統合する実用的なツールです。 top コマンドは、メモリ不足、CPU 処理能力不足、過剰な IO 読み取りおよび書き込みなどのシステム欠陥を効果的に検出できます。 top コマンドによって提供される対話型インターフェイスは、ホットキーを使用して管理できます。 関連構文: top -X
-b:以批处理模式操作; -c:显示完整的治命令; -d:屏幕刷新间隔时间; -I:忽略失效过程; -s:保密模式; -S:累积模式; -i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。
top コマンドの実行中に使用できるいくつかの対話型コマンド。これらのコマンドは 1 文字であり、コマンド ラインで -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 - 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
命令
命令:lsmod
相关推荐:《Linux视频教程》
以上がLinuxの物理メモリとは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。