ホームページ >よくある問題 >Linuxで無料のものは何ですか

Linuxで無料のものは何ですか

青灯夜游
青灯夜游オリジナル
2023-03-02 09:59:146964ブラウズ

Linux では、free はメモリ使用状況を確認するための組み込みコマンドであり、システムの物理メモリ、仮想メモリ (スワップ スワップ パーティション)、共有メモリ、システム キャッシュの使用状況を表示できます。 is "free [option] "; free コマンドの出力は、top コマンドのメモリ部分と非常に似ています。

Linuxで無料のものは何ですか

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux free コマンド: メモリ使用状況の確認

free コマンドは、システムの物理メモリ、仮想メモリ (スワップ スワップ パーティション) などのシステム メモリのステータスを表示するために使用されます。 、共有メモリ、およびシステム キャッシュの使用量の出力は、top コマンドのメモリ部分と非常によく似ています。

フリー コマンドの基本的な形式は次のとおりです。

# free [选项]

表 1 に、このコマンドでよく使用されるオプションとそれぞれの意味を示します。

#表 1 無料コマンドの一般的なオプションとその意味#オプション- b メモリ使用量をバイト(バイト)単位で表示します。 -k メモリ使用量を KB 単位で表示します。このオプションは、free コマンドのデフォルトのオプションです。 -m メモリ使用量を MB 単位で表示します。 -gメモリ使用量を GB 単位で表示します。 -t出力の最終結果では、メモリとスワップ パーティションの合計量が出力されます。 システム バッファ列を表示しません。 指定された間隔に従ってメモリ使用量を表示し続けます。
意味
#-o
-s 間隔秒

free 命令可以显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。

如果加上 -h 选项,输出的结果会友好很多:

有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:

$ free -h -s 3

上記のコマンドは、ctrl c を押すまで、3 秒ごとにメモリ使用量を出力します。

free コマンド自体は比較的単純であるため、この記事の焦点は、free コマンドを通じてシステムの現在のメモリ使用量を把握する方法にあります。

#出力の概要

まず出力内容について説明します。

  • Mem 行 (2 行目) はメモリ使用量です。

  • Swap 行 (3 行目) は、スワップ領域の使用状況です。

  • total 列には、使用可能な物理メモリとスワップの合計が表示されます。システムのスペースのサイズ。

  • used 列には、物理メモリとスワップ領域が使用されています。 ###############################################無料# # # 列は、使用可能な物理メモリとスワップ領域の量を示します。

  • ##shared 列は、共有によって使用される物理メモリの量を示します。

  • #buff/cache 列には、バッファとキャッシュによって使用される物理メモリ サイズが表示されます。

  • ##available 列には、アプリケーションがまだ使用できる物理メモリの量が表示されます。

  • # 基本的なことを理解した後でのみ考えます。という概念に基づいて、上記の出力はシステムのメモリの状態を理解するのに役立ちます。

    buff/cache

    最初に質問させてください。バッファとキャッシュは 2 種類のメモリであるはずですが、なぜ free コマンドは変更してそれらを組み合わせてみてはどうでしょうか?この質問に答えるには、ある程度の準備が必要です。まずバッファとキャッシュの意味を明確にしましょう。 ###############バッファ### オペレーティング システムでは、バッファ キャッシュを指します。通常、中国語では「バッファ」と訳されます。バッファを理解するには、「セクタ」と「セクタ」という 2 つの概念を理解する必要があります。 "ピース"。セクタはデバイスの最小のアドレス指定単位であり、「ハード セクタ」または「デバイス ブロック」とも呼ばれます。ブロックは、オペレーティング システムのファイル システムの最小のアドレス指定単位であり、「ファイル ブロック」または「I/O」とも呼ばれます。 「ブロック」。各ブロックには 1 つ以上のセクターが含まれますが、ページより大きくすることはできないため、ページはメモリ内に 1 つ以上のブロックを保持できます。ブロックがメモリにロードされると、バッファ領域に格納されます。各バッファブロックに対応します。これはメモリ内のディスク ブロックの表現に相当します (下の図はインターネットからのものです):

    バッファ キャッシュにはブロックの概念のみがあり、ファイルは含まれていないことに注意してください。ブロックに格納されているファイルの形式は考慮せず、ディスク上のブロックをメモリに直接移動するだけです。

    キャッシュ は、オペレーティング システムのページ キャッシュを指します。中国語は一般的に「ページ キャッシュ」と訳されます。ページ キャッシュは、カーネルによって実装されるディスク キャッシュです。主に次の目的で使用されます。ディスクへの影響を軽減する I/O 操作。具体的には、ディスク内のデータを物理メモリにキャッシュすることで、ディスクへのアクセスが物理メモリへのアクセスに変わります。ページ キャッシュは、メモリ ページをキャッシュします。キャッシュ内ページは、通常のファイル、ブロック デバイス ファイル (これはバッファ キャッシュを指します)、およびメモリ マップされたファイルの読み取りと書き込みによって生成されます。

    .

    ページ キャッシュによる通常のファイルのキャッシュは、次のように理解できます。カーネルがファイル (たとえば、 /etc/hosts) を実行すると、最初にこのファイルのデータが既にページ キャッシュに存在するかどうかがチェックされます。その場合は、ディスクへのアクセスをあきらめ、メモリから直接読み取ります。この動作はキャッシュ ヒットと呼ばれます。データがキャッシュにない場合、それはキャッシュミスを意味し、カーネルはブロックをスケジュールします。 I/O 操作はディスクからデータを読み取ります。次に、カーネルは読み取ったデータをページ キャッシュに配置します。このキャッシュは、ファイル システム (/etc/hosts など) によって認識されるファイルを対象とします。 ページ キャッシュのブロック デバイス ファイルのキャッシュは、前に紹介したバッファ キャッシュです。個々のディスク ブロックもバッファを通じてページ キャッシュに格納されるためです (バッファは最終的にページ キャッシュによってホストされます)。

    この時点で明確にしておきたいのは、バッファであろうとページ キャッシュであろうと、それらは同じ方法で実装されるということです。バッファは概念的には単なる特別なページ キャッシュです。 ######それでなんで freeコマンドはbuff/cacheではなく直接cacheと呼ばれるものではないでしょうか?これは、バッファーとページ キャッシュの実装が本質的に統合されていないためです。 Linuxで カーネル2.4 そうして初めてそれらを統一することができるのです。以前のカーネルには、ページ キャッシュとバッファ キャッシュという 2 つの個別のディスク キャッシュがありました。前者はページをキャッシュし、後者はバッファをキャッシュします。ストーリーを理解すると、出力内の列の名前は重要ではなくなるかもしれません。

    free 与 available

    在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别?
    free 是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux 内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache 中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available  = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。

    交换空间(swap space)

    swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。

    现在的机器一般都不太缺内存,如果系统默认还是使用了 swap 是不是会拖累系统的性能?理论上是的,但实际上可能性并不是很大。并且内核提供了一个叫做 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~100,0 告诉内核尽可能的不要将内存数据移到 swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。在 ubuntu 系统中,swappiness 的默认值是 60。如果我们觉着内存充足,可以在 /etc/sysctl.conf 文件中设置 swappiness:

    vm.swappiness=10

    如果系统的内存不足,则需要根据物理内存的大小来设置交换空间的大小。具体的策略网上有很丰富的资料,这里笔者不再赘述。

    /proc/meminfo 文件

    其实 free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观:

    $ cat /proc/meminfo

    有兴趣的同学可以直接查看这个文件。

    总结

    free 命令是一个既简单又复杂的命令。简单是因为这个命令的参数少,输出结果清晰。说它复杂则是因为它背后是比较晦涩的操作系统中的概念,如果不清楚这些概念,即便看了 free 命令的输出也 get 不到多少有价值的信息。

    相关推荐:《Linux视频教程

以上がLinuxで無料のものは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。