ページテーブルのメモリ消費量

2026/10/01 10:55

ページテーブルのメモリ消費量

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

元のサマリーはよく書かれており、一貫性があります。ただし、源資料が特定の歴史的貢献やケーススタディへの重点を置く点との整合性を高めるために、これらの主要人物と具体的な事象を簡潔に認めつつ、流麗さを損なわずに精度を追加するやや洗練されたバージョンが望ましいでしょう。

精査後のサマリー

現代のコンピューティングは、ページテーブルが理論的なレイテンシ懸念から「ページテーブルの膨張」によるシステムクラッシュの主な原因へと移行するという重要な転換期にあります。リニウズ・トーバルズが2003年に樹形構造を優先してサイズではなくレイテンシを重視したという歴史的視点は当初、メモリエフisiensi性を軽視していました。しかし、最近の事象は、ギガバイト級のRAMを搭載しているシステムでも、ページテーブル使用量の線形成長がオペレーティングシステムに重要アプリケーションを終了させることを強いることで故障を引き起こす可能性を示しています。注目すべき事例には、1つのプロセスがページテーブル用に 110 GiB を消費した件(チー・チェン)、512 GB の RAM で巨大な PTE(ページテーブルエントリ)複製により OOM(メモリ不足)でクラッシュした Oracle データベース、ページテーブルが 45 MiB から 25 GiB を超えるまで成長した Postgres の失敗などがあります。樹形構造はレイテンシ上の利点を提供しますが、多数のプロセスが大規模な共有領域をマッピングする際(例:数百のプロセスが同じページをマッピング)には、過剰な物理メモリを消費します。その結果、業界では Out-Of-Memory 故障を防ぐために、巨大ページや高度なコピーオンフェルト機構——例えばハイドラのノードローカルコピー——を緊急に採用する傾向にあります。将来の戦略は、高並行性環境での大規模クラッシュを回避するため、小ページのレイテンシ利点と最適化された割り当てによるメモリスイティ性のバランスに焦点が置かれるでしょう。

本文

TLB 充填の最適化とページテーブルメモリ効率の課題

リン・トーヴァルズ氏による「ハッシュ型のページテーブルへの非難」に関する議論は、キャッシュラインあたりの TLB エントリー数という観点から成り立っています。

TLB 充填効率性の再考

  • ツリー構造(マルチレベル):近傍の項目が隣接しているため、1 つのキャッシュラインで複数の TLB エントリを同時に満たせる。
  • ハッシュテーブル:近傍の要素がバケットに分散するため、このメリットが発揮されにくいと考えられている。
  • 著者の見解:「良き(GOOD)」な構造とは限らない。優れた TLB 充填とは、「1 つのキャッシュラインで納めることができるすべての項目を事前に入荷する」ことである。
  • Intel CPU の能力:1 回で 8 つの TLB エントリーを読み込める。
    • これに自己マッピング(または他のレベルへの専用キャッシュ)を組み合わせると、単一メモリ参照だけで、ハッシュテーブルがもたらす「愚かしい」性能の約 8 倍の被覆範囲が可能になる。

ページテーブルのメモリ効率性:一次から二次的懸念へ

ページテーブル自体のサイズは当初、レイテンシの問題に比べ次要的な懸念とされてきたが、状況は変化した。

  • 2003 年頃の認識:
    • リン氏の修士論文(1997 年)では、レイテンシへの関心が優先されていた。
    • メモリ容量については十分に重視されていなかった(三段階マルチレベルページテーブルを採用)。
  • 2020 年の転換点:シェイクール・ブット氏が、メモリ効率化が「二次的な懸念ではない」正確なケースを見出した。
    • page table の計量指標を
      memory.stat
      に追加した。
    • 一般的なケース:ページテーブルはマッピング済みのメモリの約 1/512 程度のみ使用する(多くの cgroup では 1% を下回る)。
      • ※ゼロコピーでアプリケーションメモリをマッピングするネットワークドライバなど、巨大な pgtable を必要とする特殊なケース以外。

N プロセスによる共有メモリのコスト増

各プロセスが同一ページをマップすると、それらのプロセスは独自の PTE(ページテーブルエントリー)を必要とするため、コストが増加する。

  • 計算ロジック:
    • ページサイズ:4 KiB
    • PTE サイズ:8 バイト
    • 共有マッピングするプロセス数:N
    • コスト比率:データページの約 N/512 のメモリが必要となる。
  • 具体例(512 プロセス):
    • 512 つの PTE × 8 バイト = 4 KiB の追加メモリ必要。
    • この場合、ページテーブルのコストはデータページそのものと同程度になる。

リアルなケーススタディ:巨大な PTE メモリ消費

カーネルメーリングリストやコミュニティから報告された、多数のプロセスが大規模な共有メモ리를マッピングする際の「エッジケース」事例。

1. アンデリア・アランジェリ(Andrea Arcangeli, 2002 年)

  • 問題:64 GiB の x86 マシンで空きメモリはあるのに、OOM(Out Of Memory)が発生したケース。
  • 原因:数百のプロセスがそれぞれ同じ 1 GiB を共有マッピング。データページは共有だが、PTE は各プロセスごとに存在し、PAE で約 2 MiB を占有していた。
  • 制約:x86(32 ビット)では「lowmem」領域に制限があり(物理メモリの約 896 MiB)、ページテーブルが低メモリアドレスを圧迫していた。
  • 解決策:PTE の配置を lowmem から highmem に移動させるパッチ化。

2. カリド・アジズ(Khalid Aziz, 2022 年)

  • 問題:512 GB RAM、300 GB SGA を持つ Oracle DB サーバーで、1,500 クライアント接続時に OOM クラッシュ。
  • 原因:各プロセスが独自 PTE を持つため、最悪ケース(全プロセスが SGA をマッピング)では PTE 単体で 878 GB を占有する計算になる。
    • 例:4 KiB ページを 2,000 プロセスがマップ → 16 KB の PTE 必要。
  • 解決策:mshare という仕組みの提案(プロセス間で PTE を共有化)。※未マージ。

3. チー・Zheng(Qi Zheng, 2021 年)

  • 問題:RSS 590 GiB に対し、ページテーブルが 110 GiB も消費しているプロセス。
    • PTE 必要量推定:約 1.2 GiB のみだったはずだが、実際は 110 GiB。
  • 原因:
    munmap()
    ではなく
    madvise(MADV_DONTNEED)
    を使用してメモリを返却した際、データページは解放されるが、PTE は割り当てられたまま残り、空の PTE が蓄積された。
    • free_pgtables
      →
      free_pgd_range
      の呼び出しで解消を試みたが、共有マッピングなしの単一プロセスによる持続的な保持が原因。
  • 結果:パッチを改変し、2025 年にマージ。

データベース環境における実績

データベース関連の研究・測定でも同様の傾向が確認されている。

ペルコナ(Percona, 2021 年)の事例

  • 現象:PostgreSQL が生産環境で頻発する OOM キル。
    • 環境:192 GiB マシン、共有バッファ 138 GiB、接続数 80。
  • 進行状況:バックエンドキャッシュの拡大に伴い、ページテーブルが 45 MiB から 25 GiB に成長。メモリ圧迫とスワップを招いた。
  • 解決策:巨大ページ(Huge Pages) の採用。
    • 結果:同ワークロード下でもページテーブルは 61 MiB で安定化。

クリックハウス(ClickHouse, 2026 年)の測定

  • 現象:128 GiB マシン(共有バッファ 32 GiB)で、バックエンドキャッシュ(15.6 GiB)をスキャンするごとにページテーブルが増加。
    • キャッシュスキャン時:+31 MiB/回
    • 接続数 200 時:6.1 GiB を占有。
  • 解決策:巨大ページの採用。
    • 結果:同接続数下でもコストを 111 MiB に抑制。

巨大ページ導入のデメリット

無償のものではなく、以下のような制約がある。

  • フラグメント化されていない(連続した)メモリが必要。
  • 負荷のかかったマシンでは同一リクエストの常時失敗や、THP(透明な巨大ページ)割り当てでのストールが発生する。
  • THP の見直し:メル・ゴーマン氏(2016 年)は THP デフォルト無効化を提案。「数年経ったので手放す時」と述べている。ネルソン・エルハグ氏も、メモリリークや CPU 使用率問題への言及がある。

NUMA マシンにおける新たな課題

複数のノードを持つ NUMA マシンでは、レイテンシとメモリ容量に新たな制約が生まれる。

  • 問題の本質:他のノード上のスレッドが TLB ミスすると、リモートメモリのページテーブルを参照しなければならない。
    • Mitosis(ASPLOS 2020)の研究:リモート PTE の参照は、遠隔データアクセスと同程度のパフォーマンス低下を引き起こす。
    • Hydra paper(USENIX ATC 2024):8 ソケット・8 TB RAM マシンで再現確認。

スコープと同期のジレンマ

NUMA アプローチには主に 2 つの戦略があるが、いずれもトレードオフが存在する。

  1. 全体ツリーの複製(Mitosis 方式)
    • 手法:各ノードで全体ページテーブルツリーを複製。
    • デメリット:
      • メモリコスト増(サイズ × ノード数)。
      • 変更時に全コピーを更新する必要がある(同期コスト)。
  2. オンデマンドコピー(Hydra 方式)
    • 手法:PTE がフォールト発生したノードのみへコピー。ページテーブルページには「コピーを持つノードのリスト」を保持。
    • 特徴:初期メモリコストは抑えられ、アクセス時に応答。

結論:トレードオフの選択

NUMA マシンにおいて页面テーブルのコピー戦略を選ぶ際、以下の二択が迫られる。

  • オプション A:コピーを 1 つだけ保ち、TLB ミス時にリモートテーブルを読むコストを負う。
    • → レイテンシパフォーマンスへの影響が懸念。
  • オプション B:各ノードにコピーを持ち、同期コスト(メモリ使用量増)を負う。
    • → メモリ容量と保守性への影響が懸念。

同じ日のほかのニュース

一覧に戻る →

2026/10/04 21:51

Qwen3.8Flash Next(125B)を消費者向けハードウェア(RTX4090)上で100T/sで動作させます

## Japanese Translation: Strata は、ISTA-DASLab、UkisAI、Unsloth によって開発されたオープンソースで MIT ライセンス付与のプラットフォームであり、Windows または Linux PC に NVIDIA または AMD GPU(VRAM 12GB 以上)を搭載している場合、完全にオフラインで強力な Qwen3.8-Flash-Next AI モデルを実行することを可能にします。必要最低限のリソースとしては、RAM 32GB と空きディスク領域約 80GB が求められます。このローカル実行は、情報をデバイス外に出さないことによりデータプライバシーを確保します。RTX 5070 でのベンチマークでは、プロンプト読み取り速度が 2,600 トークン/秒を超え(Q2_0 では書き込み速度最大 94 トークン/秒)、モデルサイズや圧縮レベルにより異なります。この効率は、GPU、RAM、CPU にわたってタスクを知的に分配するユニークな「共有メモリー」アーキテクチャによって達成されており、これにより数千個の専用プロセッサを効果的にシミュレートしています。ユーザーは自動インストーラーを通じて Strata をインストールでき、ハードウェアチェックを行い、モデルを選択(Q2_0、IQ2_XS、Coder および Unsloth/OrcaRouter からの実験的バリエーションなど)、約 70GB のダウンロードを行い、特定の GPU に合わせてエンジンを設定します。「Coder」バリエーションはコード生成に最適化されており(SWE-bench Verified スコアの 91% を達成)、プログラミング文脈外の一般的な CJK テキストタスクでは性能が劣ります。画像処理は NVIDIA カードでサポートされており、AMD カードは Linux ではソフトウェアレンダリングを通じて画像処理が可能ですが、Windows ではまだ対応していません。そのため、セットアップ時に画像サポートを「はい」に選択する必要があります。Strata は Cursor、GitHub Copilot、Claude Code などのコーディングアシスタントと統合でき、`http://127.0.0.1:8080/v1` で OpenAI 互換プロバイダーとして動作します。一般的なインストールに関する注意点には、初期のフリーズは正常であり、低速は空き RAM の不足を示す可能性があること、ポート 8080 の競合は他のインスタンスが実行中の場合に起こり得ることが含まれます。本プロジェクトではマルチ GPU セットアップもサポートしており、設定、アップデート、トラブルシューティングについては `docs/TROUBLESHOOTING.md` などのドキュメントリンクを通じて管理できます。

2026/10/05 4:42

macOS 27 で Apple Intelligence をオフにするとディスク容量を取り戻せる

## Japanese Translation: RemoveMacAI の主たる目的は、マクロシステムファイルを変更せず、かつ深い技術的介入を必要とせずに macOS 27(以降)で Apple Intelligence の機能を安全に無効化することにあります。構成プロファイルを適用し、ダウンロードされたモデルを削除することで、このツールは Siri、Writing Tools、Genmoji、Image Playground、および予測機能など特定の AI 機能を効果的に無効化します。ただし、別々の音声モデルを使用する標準的なディクテーション機能は維持されます。さらに重要なのは、システム設定内でユーザーの承認を義務付けることにより、オペレーティングシステムがこれらのモデルを自動的に再ダウンロードすることを防止することです。このプロセスはシステムインテグリティプロテクションを維持し、ネットワークリクエストを生成しないため、Apple Silicon ハードウェア上のユーザーに堅牢なプライバシーとセキュリティを保証します。MIT ライセンスの下で 4evy が開発した本ユーティリティは、macOS のアップデート後も存続する永続的なソリューションを提供します。ストレージ設定では一時的に AI 機能がリスト表示される場合がありますが、マクロシステムにより後から削除されるため、コア機能は引き続き無効化された状態となります。完全な機能を復元したい場合や特定の機能を管理したい場合は、各種コマンド(例:`removemacai off --keep <features>`)を使用でき、必要に応じて Homebrew を経由してツールをアンインストール (`brew uninstall removemacai`) することで変更を元に戻すことも可能です。インストールは、curl スクリプトを直接実行することと、Homebrew を通じての両方がサポートされています。

2026/10/05 4:37

不適切な編集により、Google データセンターの水道・電力使用量が露見した

## Japanese 訳: ネブラスカ州のデータセンターは、ジム・ピレン知事の 7 月 20 日付実行命令に従い、現在、年間にわたる水、電力、インフラの影響について環境水エネルギー省(DWEE)に報告することを義務付けられています。グーグルなどの事業者は当初、その使用量データが州の営業秘密法(§§81-1527; 84-712.05; NAC TITLE 115, CH. 2)で保護されると主張しましたが、DWEE は透明性の確保のため、報告書を公表しています。9 月 30 日までの時点で、6 つの施設が報告書を送付しており、合計約 7.65 億ガロンの水(およそ 1,160 のオリンピックサイズの水泳プール)を使用していたことが明らかになりました。アゲート LLC(グーグルのリノンキャンサイト)は約 1,330 万ガロンを使用し、ピーク需要時に 52.65 メガワットを消費しました。ファイヤーボールグループ LLC(パピリオン)は 2025 サイクルで年間使用量 547.88 メガガロンの最も高い使用量を報告しました。この開示には財政的インセンティブも含まれています:ネブラスカ・アドバンテージ法の下、施設は期待される利用度に基づいて税免除を受け、アゲートは 2025 年に約 5,580 万ドルの還付を予定しており、ファイヤーボールグループは約 3920 万ドル、ウェストウッドソリューションズ(オマハ)は約 2,260 万ドルです。現在まで、「イマジネー・ネブラスカ法」の下で受給された報奨金はあります。報告書は最大規模のアゲート LLC の 288,530 平方フィート(およそ 5 つの足球场分)に及んでいます。使用量報告書は 9 月 30 日まで提出期限があり、DWEE ウェブサイトの「DEQ Program」欄に「DCR」と入力することでアクセスできます。これらの要件を監督しているのは DWEE データセンタータスクフォースであり、これはデータセンターが地域の水道・電力システムに与える環境的圧力を示すように、情報公開から赤文字の秘密性へのシフトを強調しています。