検索
ホームページシステムチュートリアルLinuxLinux カーネルのメモリ断片化防止テクノロジ: メモリ管理の深い理解

Linux カーネルのメモリ断片化防止テクノロジ: メモリ管理の深い理解

Feb 12, 2024 am 09:54 AM
linuxLinuxチュートリアルLinuxシステムLinuxコマンドシェルスクリプト埋め込みLinuxLinux を始めるLinux学習

Linux システムでさまざまなメモリの問題に遭遇したことがありますか?メモリリーク、メモリの断片化など。これらの問題は、Linux カーネルのメモリ断片化防止テクノロジを深く理解することで解決できます。

Linux kernel内存碎片防治技术:深入理解内存管理

Linux カーネルが物理メモリを編成および管理する方法はバディ システムであり、物理メモリの断片化はバディ システムの弱点の 1 つです。断片化の問題を防止および解決するために、カーネルはいくつかの実用的なテクノロジを採用しています。ここではこれらのテクノロジーについて説明します。要約を作成します。

1 メモリ不足時のフラグメントの統合

バディからメモリ ページを適用します。適切なページが見つからない場合は、圧縮と再利用という 2 つのステップのメモリ調整が実行されます。前者はフラグメントを統合してより大きな連続メモリを取得するものであり、後者は必ずしもメモリを占有しないバッファ メモリをリサイクルするものです。ここでの焦点は、comact を理解することです。全体のプロセスは大まかに次のとおりです。 リーリー

GFP_FS および __GFP_IO; さらに、ゾーンの残りのメモリは特定の条件を満たす必要があります。カーネルはそれを「断片化インデックス」と呼びます。この値は 0 ~ 1000 です。デフォルトの断片化インデックスは、次の場合にのみ使用できます。は 500 より大きいです。compact の場合、このデフォルト値は proc ファイル exfrag_threshold を通じて調整できます。断片化インデックスは、fragmentation_index 関数を通じて計算されます:

リーリー

メモリ断片を統合するプロセス中、断片化されたページはこのゾーン内でのみ移動され、ゾーン内の低いアドレスにあるページは可能な限りゾーンの最後に移動されます。新しいページの場所の適用は、compaction_alloc 関数を通じて実装されます。

移動プロセスは同期と非同期に分かれており、メモリ アプリケーションが失敗した後、最初の圧縮では非同期が使用され、その後の再利用では同期が使用されます。同期プロセスは現在使用されていないページのみを移動し、非同期プロセスは移動する前にすべての MOVABLE ページを移動して使用されるのを待ちます。

2 モビリティごとにページを整理する

メモリページは、移動度に応じて次の 3 つのタイプに分類されます。 UNMOVABLE: メモリ内の位置は固定されており、自由に移動できません。カーネルによって割り当てられるメモリは、基本的にこのタイプに属します。

再利用可能: 移動はできませんが、削除してリサイクルできます。たとえば、ファイル マップド メモリ;
MOVABLE: 自由に移動可能で、ユーザー空間メモリは基本的にこのタイプに属します。
メモリを申請する場合、モビリティに応じて、まず指定された種類の空きページにメモリを申請します。各ゾーンの空きメモリは次のように構成されます。 リーリー
指定されたタイプの free_area でメモリを要求できない場合、バックアップ タイプからメモリを転送できます。転送されたメモリは、新たに指定されたタイプ リストに解放されます。カーネルはこのプロセスを「盗難」と呼びます。
代替タイプの優先順位リストは次のように定義されます:

リーリー

すべてのシナリオがモビリティによるページの編成に適しているわけではないことに注意してください。メモリ サイズがさまざまなタイプに割り当てるのに十分でない場合、モビリティを有効にするのは適していません。有効かどうかを示すグローバル変数があり、メモリの初期化中に設定されます:
リーリー

page_group_by_Mobility_disabled の場合、すべてのメモリは移動不能になります。

各メモリ領域が持つ少なくともページ数を決定するパラメータ、pageblock_nr_pages があり、次のように定義されます。

#pageblock_order HUGETLB_PAGE_ORDER

を定義します リーリー
システムの初期化中に、すべてのページが MOVABLE としてマークされます:

リーリー

他のモビリティ タイプのページは後で生成されますが、これが上記の「盗用」です。これが発生すると、小さなフラグメントの生成を避けるために、フォールバック内の優先度の高い、より大きな連続ページが通常「盗まれ」ます。

リーリー

/proc/pageteypeinfo を通じて、現在のシステムのさまざまなタイプのページ分布を表示できます。

3

仮想リムーバブル メモリ ドメイン モビリティに基づいてページを編成するテクノロジーが登場する前に、仮想メモリ ドメインである ZONE_MOVABLE という別の方法がカーネルに統合されていました。基本的な考え方はシンプルです。メモリを取り外し可能な部分と取り外し不可能な部分の 2 つの部分に分割します。
1. enum zone_type {
2. \#ifdef CONFIG_ZONE_DMA
3. ZONE_DMA,
4. \#endif
5. \#ifdef CONFIG_ZONE_DMA32
6. ZONE_DMA32,
7. \#endif
8. ZONE_NORMAL,
9. \#ifdef CONFIG_HIGHMEM
10. ZONE_HIGHMEM,
11. \#endif
12. ZONE_MOVABLE,
13. __MAX_NR_ZONES
14. };

ZONE_MOVABLE的启用需要指定kernel参数kernelcore或者movablecore,kernelcore用来指定不可移动的内存数量,movablecore指定可移动的内存大小,如果两个都指定,取不可移动内存数量较大的一个。如果都不指定,则不启动。
与其它内存域不同的是ZONE_MOVABLE不关联任何物理内存范围,该域的内存取自高端内存域或者普通内存域。
find_zone_movable_pfns_for_nodes用来计算每个node中ZONE_MOVABLE的内存数量,采用的内存区域通常是每个node的最高内存域,在函数find_usable_zone_for_movable中体现。
在对每个node分配ZONE_MOVABLE内存时,kernelcore会被平均分配到各个Node:
kernelcore_node = required_kernelcore / usable_nodes;
在kernel alloc page时,如果gfp_flag同时指定了__GFP_HIGHMEM和__GFP_MOVABLE,则会从ZONE_MOVABLE内存域申请内存。

总之,Linux kernel内存碎片防治技术是一个非常重要的概念,可以帮助你更好地理解Linux系统中的内存管理。如果你想了解更多关于这个概念的信息,可以查看本文提供的参考资料。

以上がLinux カーネルのメモリ断片化防止テクノロジ: メモリ管理の深い理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は良许Linux教程网で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Linuxエイリアスを使用したカスタムコマンドショートカットで生産性を高めますLinuxエイリアスを使用したカスタムコマンドショートカットで生産性を高めますApr 12, 2025 am 11:43 AM

導入 Linuxは、柔軟性と効率性により、開発者、システム管理者、およびパワーユーザーが好む強力なオペレーティングシステムです。しかし、頻繁に長く複雑なコマンドを使用することは退屈でERです

Linuxは実際に何に適していますか?Linuxは実際に何に適していますか?Apr 12, 2025 am 12:20 AM

Linuxは、サーバー、開発環境、埋め込みシステムに適しています。 1.サーバーオペレーティングシステムとして、Linuxは安定して効率的であり、多くの場合、高電流アプリケーションの展開に使用されます。 2。開発環境として、Linuxは効率的なコマンドラインツールとパッケージ管理システムを提供して、開発効率を向上させます。 3.埋め込まれたシステムでは、Linuxは軽量でカスタマイズ可能で、リソースが限られている環境に適しています。

Linuxで倫理的ハッキングを習得するための必須ツールとフレームワークLinuxで倫理的ハッキングを習得するための必須ツールとフレームワークApr 11, 2025 am 09:11 AM

はじめに:Linuxベースの倫理的ハッキングでデジタルフロンティアを保護します ますます相互に接続されている世界では、サイバーセキュリティが最重要です。 倫理的なハッキングと浸透テストは、脆弱性を積極的に特定し、緩和するために不可欠です

Linuxの基本を学ぶ方法は?Linuxの基本を学ぶ方法は?Apr 10, 2025 am 09:32 AM

基本的なLinux学習の方法は次のとおりです。1。ファイルシステムとコマンドラインインターフェイス、2。LS、CD、MKDIR、3。ファイルの作成と編集などのファイル操作を学習するマスター基本コマンド、4。

Linuxの最も使用は何ですか?Linuxの最も使用は何ですか?Apr 09, 2025 am 12:02 AM

Linuxは、サーバー、組み込みシステム、デスクトップ環境で広く使用されています。 1)サーバーフィールドでは、Linuxは、その安定性とセキュリティにより、Webサイト、データベース、アプリケーションをホストするための理想的な選択肢となっています。 2)埋め込みシステムでは、Linuxは高いカスタマイズと効率で人気があります。 3)デスクトップ環境では、Linuxはさまざまなユーザーのニーズを満たすために、さまざまなデスクトップ環境を提供します。

Linuxの欠点は何ですか?Linuxの欠点は何ですか?Apr 08, 2025 am 12:01 AM

Linuxの欠点には、ユーザーエクスペリエンス、ソフトウェア互換性、ハードウェアサポート、学習曲線が含まれます。 1.ユーザーエクスペリエンスは、WindowsやMacOほどフレンドリーではなく、コマンドラインインターフェイスに依存しています。 2。ソフトウェアの互換性は他のシステムほど良くなく、多くの商用ソフトウェアのネイティブバージョンがありません。 3.ハードウェアサポートはWindowsほど包括的ではなく、ドライバーは手動でコンパイルされる場合があります。 4.学習曲線は急で、コマンドラインの操作をマスターするには時間と忍耐が必要です。

Linuxは学ぶのが難しいですか?Linuxは学ぶのが難しいですか?Apr 07, 2025 am 12:01 AM

linuxisnothardtolearn、butthedifficultydependsonyourbackgroundandgoals.forthosewithosexperience、特にcommand-llinefamparsition、linuxisaneasyytransition.beginnersmayteeper relearningcurvebutcanagewithpersources.linux'sopen-sourcenature

Linuxの5つの基本コンポーネントは何ですか?Linuxの5つの基本コンポーネントは何ですか?Apr 06, 2025 am 12:05 AM

Linuxの5つの基本コンポーネントは次のとおりです。1。カーネル、ハードウェアリソースの管理。 2。機能とサービスを提供するシステムライブラリ。 3.シェル、ユーザーがシステムと対話するインターフェイス。 4.ファイルシステム、データの保存と整理。 5。アプリケーション、システムリソースを使用して機能を実装します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。