25
Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved. メモリホットプラグの 現状と今後 メモリホットプラグの 現状と今後 VA Linux Systems Japan K.K. 高橋浩和 [email protected] OSDN セミナー Linux Kernel Conference 20031015OSDN セミナー Linux Kernel Conference 20031015Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved. 目次 目的 現在の状況 Linux メモリ管理概要 現在の実装 課題と目標

メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

1

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリホットプラグの現状と今後

メモリホットプラグの現状と今後

VA Linux Systems Japan K.K.高橋浩和

[email protected]

OSDN セミナーLinux Kernel Conference

2003年10月15日

OSDN セミナーLinux Kernel Conference

2003年10月15日

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

目次

Ø目的Ø現在の状況

Ø Linuxメモリ管理概要Ø現在の実装Ø課題と目標

Page 2: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

2

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリホットプラグの目的と効果

Øメモリモジュールの活性保守交換Ø仮想マシン環境、パーティショニング環境における(ゲ

スト)OS間でのメモリの移動

ØNUMA環境におけるプロセスマイグレーションØ組み込み機器における省電力処理との連携Ø物理メモリのデフラグメント処理

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

OS間でのメモリとCPUの融通

ホストOS、もしくは、パーティショニング環境ホストOS、もしくは、パーティショニング環境

メモリメモリ

メモリ

CPU CPU CPU CPU CPUCPU CPU

Page 3: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

3

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリホットプラグ実装の現状(1)

Øメモリマイグレーション機能の基本実装ができたn ページキャッシュとプロセスメモリが対象

Øノードホットプラグとメモリセクションホットプラグn IBMと富士通のチームが、自らのハードウェアに合わ

せて、仕様策定中n IBM: LPAR(論理区画)環境用の、小さな単位でのメ

モリホットプラグn 富士通: システムパーティショニング環境用の、ノード

単位でのホットプラグ

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリホットプラグ実装の現状(2)

Ø sysfsインターフェイスとホットプラグイベントn 通常のホットプラグデバイスとして表現

Ø hugetlbpageのホットプラグn 試作完了

Ø物理ページのデフラグメント処理n Marcelo Tosattiが汎用機能を設計開始

Page 4: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

4

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

Linuxメモリ管理の概要

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

ノード、ゾーン、ページ

DMAゾーン

DMAゾーン

NORMALゾーン

NORMALゾーン

HIGHMEMゾーン

HIGHMEMゾーン

ノード0

DMAゾーン

DMAゾーン

NORMALゾーン

NORMALゾーン

HIGHMEMゾーン

HIGHMEMゾーン

ノード1

Page 5: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

5

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリの種類

Øカーネル内部データØプロセスメモリ

Øファイルキャッシュ

ページアロケータ(Buddyアロケータ)ページアロケータ(Buddyアロケータ)

Slabアロケータ

Slabアロケータ vmallocvmalloc 仮想記憶機構仮想記憶機構

プロセス空間管理

ファイルキャッシュ

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

プロセス空間(1)

Ø一つの空間全体を管理するmm_structØ有効区間と属性を管理するvm_area_struct

mm_struct

プロ

セス

空間

vm_area_struct

vm_area_struct

ページテーブル

ページ

ページ

Page 6: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

6

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

プロセス空間(2)

Øデマンドページングとコピーオンライトn 実際に必要になるときまで、ページ割り当てを遅延

プロセス空間

ページ

PTE

ページフォルト

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

ページキャッシュとスワップキャッシュinode/swapper_space

page_treepage

ファイル/スワップ域

Page 7: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

7

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

スワップアウトによるページの回収(1)

pageactive

inactive

freelist

page

kswapd

ゾーン

        kswapdページアクセス

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

スワップアウトによるページの回収(2)

nゾーン毎のウォーターマークによりkswapd動作nもしくはメモリ確保処理の延長でページを解放

ゾーンの全メモリ量

kswapd起動 kswapd終了

空きメモリ量 使用中メモリ量

Page 8: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

8

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

スワップアウト処理

Øプロセス空間からのマップを解除Øファイルマップ域n ページがDirtyであれば、ファイルへ書き戻す

n ファイルシステム固有のページ依存データを解放

n ページを破棄

Øプロセスメモリn スワップキャッシュ上に移動。swap entryを割り当てn swapデバイスにデータを退避

n PTEにswap entryを書き込む

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

objrmap – ファイルマッピング域 -

物理ページ

PTE

プロセス空間

inode

page_tree

vm_area_struct

page

ファイル

ファイルシステム

Page 9: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

9

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

ページの解放 - ファイルマッピング域 -

PTE

プロセス空間

inode

page_tree

vm_area_struct

ファイル

ファイルシステム

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

objrmap – 無名マッピング域 -

物理ページ

PTE

プロセス空間

anon_vma

vm_area_struct

page

swap域

entry

swapper_space

page_tree

Page 10: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

10

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

ページの解放 – 無名マッピング域 -

PTE

プロセス空間

vm_area_struct

swap域

entry

swapper_space

page_tree

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリホットプラグの実装

Page 11: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

11

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

構造

Øホットプラグデバイスの一種として実装n CPUも同様の実装

共通デバイスモデル共通デバイスモデル

ホットプラグイベント

メモリホットプラグフレームワーク

メモリホットプラグフレームワークsysfssysfs

/sbin/hotplug/sbin/hotplugメモリマイグレーション

メモリマイグレーション

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリの追加

Øホットプラグイベントの発生n sysfsへ生成

n hotplugスクリプト起動。メモリ属性の決定と管理対象への組み込み支持

Øメモリ削除を考慮した管理データ配置に注意n ノード管理構造(pgdat)、ページ管理構造(mem_map)を

どこに確保すべきか?

Page 12: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

12

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

sysfs

Ø小さな単位でのホットプラグへの対応(案)n 各メモリ単位の状態表示と制御

/sys/devices/system/memory/ memory0/memory1/memory2/block_size_bytesprobe

phys_devicephys_indexstate

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリの削除

Ø対象領域からのメモリ確保を禁止Ø対象領域からのページの強制移動n メモリ上に展開されているデータの退避

Øメモリ管理データ構造の解放n ページ管理構造(mem_map)の解放

n ノード毎の削除ならノード管理構造の解放。CPU、各種デバイスのデータ構造解放順序制御

Øsysfsからの対応エントリの削除

Page 13: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

13

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

メモリのマイグレーション処理

Ø swapout方式と、remap方式の併用Ø swapout方式:利用頻度の低いページは、そのまま解

放してしまう。n この方式だけでは、対応できないページある

Ø remap方式:利用頻度の高いページは、ページを交換する。n 代替ページを確保、データをコピー、古いページの代わ

りに登録する

Øシステムフリーズが不要

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

swapout方式

Øゾーン毎に受け持ちのkswapdがいるØ閾値の変更

ØPTEのアクセスビット、PG_referncedフラグの無視Ø扱えないページn mlockされたページn 二次記憶を割り当てられないページ

n アクセス頻度の高いページ。新しいアクセス要求をブロックできないため

Ø I/Oが伴うため遅い、またシステム負荷を上げてしまう

Page 14: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

14

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

swapout方式コードイメージ

Ø対象の領域でLRU上にあるpageを選択しリストに登録。リスト毎shrink_list()関数に渡す。

for (削除領域内のpageに対し) {   if (PageLRU(page) && steal_page_from_lru(zone, page))

list_add(&page->lru, page_list);}

shrink_list(&page_list, &sc);

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

remap方式

Øページ交換処理中に発生するアクセス要求のブロックn 新しいアクセス要求を交換予定のページ(PG_lock,

!PG_uptodate)へ転送

l page_tree上のページを交換l ページをプロセス空間から剥がす

n 古いページへのアクセスが無くなるのを待って、ページデータをコピー

n ブロックされているプロセスを起床

Ø理論的には、I/O発生なしに実行可能

Page 15: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

15

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

remap方式

Ø待ち合わせが必要なページn 参照があるページ

l システムコール処理中l プロセス空間にマップされている

n I/O中のページ

l lock状態

l writeback状態n dirtyなページ(PG_privateが立っているとき)

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

wwpage_tree

address_space Uptodate

process

PTE削除page

process

PTE

システム

コール

その他

カーネル

処理

Page 16: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

16

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

wwpage_tree

address_space Uptodate

process

PTE削除page

Locked

Uptodate代替page

process

PTE

システム

コール

その他

カーネル

処理

システムコール

ペー ジフォルト メモリアクセス

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

wwpage_tree

address_space Uptodate

process

PTE削除page

Locked

Uptodate代替page

process

PTE

システムコール

ペー ジフォルト メモリアクセス

コピー

Page 17: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

17

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

wwpage_tree

address_space

process

PTE

Uptodate代替page

process

PTE

システムコール

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

二次記憶が割り当てられてないページ

Øプロセスメモリn swapエントリを割り当ててから、remap処理を開始する

ØRAMディスク、擬似ファイルシステムが利用するページn swapout方式は不可能、remap方式のみで対処する

Page 18: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

18

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

解放を抑制されているページの扱い

Ømlockされたページn 強制交換の仕組みの実装

Øその他解放を抑制されているページn 操作の完了を待ち合わせるl I/O処理中のページ。ページキャッシュ上のページ、

Direct I/O中のプロセス空間に割り当てたページl futex mutex変数のアクセス処理

n ホットプラグ可能なメモリ域に割り当てないl AIOのイベント通知用バッファ域

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

自由度の高いマイグレーション処理(1)

Øファイルシステム固有のマイグレーション処理を定義可能とする。n address_space_operationsとして、migrate_pageメソッドを

追加

n ファイルシステム固有の管理下にあるページの移動l page->privateメンバを利用しているページ

l ファイルシステムの判断でページ参照数を上げて、解放を抑制しているページ

Page 19: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

19

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

自由度の高いマイグレーション処理(2)

Øファイルシステムがmigrate_pageメソッドを未定義n PG_privateなページはwritebackした後、ファイルシステ

ム固有データ(buffer以外もある)を解放し、移動する

Øファイルシステム固有データの移動処理を定義n PG_privateなページは、ファイルシステムが用意した固

有データのマイグレーション処理に依頼する

Øマイグレーション処理全体を定義n ファイルシステムが管理するページ全てのマイグレーシ

ョン処理の責任を持つ

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

remap処理コードイメージ

lock_page(page);if (PageAnon(page) && !PageSwapCache(page))

add_to_swap(page, GFP_KERNEL);newpage = page_cache_alloc(mapping);if (mapping->a_ops->migrate_page)

mapping->a_ops->migrate_page(page, newpage);else

generic_migrate_page(page, newpage, migrate_page_common);page_cache_release(page);

Ø swap entryの割り当てØファイルシステム固有メソッドがあればそれを呼び出し、

なければデフォルト処理を呼び出す

Page 20: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

20

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

remap処理コードイメージ

Ø page_tree上でのページの交換Øプロセス空間からのunmap

Ø待ち合わせと、ファイルシステム固有データの移動

replace_pages(page, newpage);if (page_mapped(page))

try_to_unmap(page, &vlist);migrate_fn(page, newpage, &vlist);unlock_page(newpage);

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

マイグレーション処理の性能改善

Ø I/O発生を抑制するn buffer付きのページでも、writebackなしにページ交換。

ファイルシステム固有の交換処理にて対応

Ø他のカーネル処理で利用中のページは後回しにする

Page 21: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

21

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

注意点:マイグレーション処理の要求

Ø同じページを二度page_treeから求めてはならない

page = find_get_page(mapping->page_tree, index);

:

○ page_cache_get(page);

× page = find_get_page(mapping->page_tree, index);

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

HugeTlbPageのホットプラグ(1)Ø汎用メモリマイグレーション処理の利用n hugetlbpageは、hugetlbfs上擬似ファイルのページキャ

ッシュ(のようなもの)として実現

Ø実装上の課題n 汎用メモリマイグレーション処理は、ページングに依存

l ページフォルト処理がない(Intel技術者が実装中)、ページの動的確保処理がない

l ページアウトの対象にならない。LRU上にない、rmap構造を持たない(構造が少し足らない)

Page 22: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

22

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

hugetlbfsとHugeTlbPage

連続物理

ページHugePTE

プロセス空間

hugetlbfsinode

page_tree

vm_area_struct

page仮想的なファイルをプロセス空間にmmap

page

連続物理

ページ

HugePTE

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

HugeTlbPageのホットプラグ(2)Ø二段階のメモリマイグレーションn 動的HugeTlbPage確保。最終的には、汎用デフラグ処

理(Marcelo検討開始)を採用予定

n HugeTlbPage自体の移動

Øページングの基本機能の実装n ページフォルト処理。最終的にはIntel技術者が開発中

のものを採用予定

n objrmap構造の導入と、プロセス空間からのunmap処理の実装

Page 23: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

23

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

二段階のメモリマイグレーション

削除するメモリ域

hugetlbpage

page

page

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

課題

Ø動的削除可能なメモリ領域の指定方法の決定n ゾーン単位?それとももっと小さな別の単位?

ØNUMAの考慮Ø nonlinearマッピング (MAP_POPULATE指定のmmap)

対応objrmapの実装

Øメモリマイグレーション速度の制御Øドキュメント整備

Page 24: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

24

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

今後の目標

Øカーネル空間のメモリ交換Ø RDMA対応

Øネットワーク障害の扱いØ仮想マシンへの(実験的な)適用Øその他

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

カーネル空間のメモリ交換

Ø DMAアドレスの交換n DMAバッファ。デバイスドライバとの連携、強制停止と

再開

Ø物理アドレスの交換n IA32であれば、PTEやGDTなど

Ø論理アドレスの交換n 大部分のカーネルデータはこれで十分

n メモリ大喰らいslabへの対応、inode/dentryなど。

Page 25: メモリホットプラグの 現状と今後 - OSDN · 2015. 3. 31. · メモリの削除 Ø対象領域からの メモリ確保を禁止 Ø対象領域からの ページの強制移動

25

Copyright© 2004, VA Linux Systems Japan K.K. All rights reserved.

協力者募集

Ø開発参加者、スポンサーはいつでもwelcomen [email protected]

Ø利用技術を開発する者が現れると面白い