を昨日つくってmarceloに送った。
なんで、linux-mmに直接投げなかったかというと、marceloの提案(下に引用する)通りに
実装すると、memory pressure状態を抜けたときに脱出通知がされず(そもそもshrink_active_listが呼ばれないので、んな所で判定するのが間違ってる)
一度でもmemory pressure状態になると二度とturn offされないからである。
どうでもいいが、パッチセットの説明にカーネルコアへの影響を最小限にした云々と書いた割りに、すでに
[1/5] おれ専用APIをselect.cに追加
[2/5] eventpollをおれの都合で書き換え
[3/5] wait.hにオレ専用APIを追加
[4/5] メモリ通知デバイスの追加 ←本当のパッチ
[5/5] vmscan.cをおれの都合で書き換え
という、どこが最小限やねんwwというパッチセットになっているのは秘密だだだ
なんで、linux-mmに直接投げなかったかというと、marceloの提案(下に引用する)通りに
So something like the following sounds better:
- have your poll_wait_exclusive() patch in place
- pass a "status" parameter to mem_notify_userspace() and have it clear
mem_notify_status in case status is zero, so to stop sending POLLIN to processes.
- call mem_notify_userspace(0) from mm/vmscan.c when ZONE_NORMAL reclaim_mapped
is false (that seems a good indication that VM is out of trouble).
- test for mem_notify_status in mem_notify_poll(), but do not clear it.
- at mem_notify_userspace(), use wake_up_nr(number of mem_notify users/10) (10
meaning a small percentage of registered users).
実装すると、memory pressure状態を抜けたときに脱出通知がされず(そもそもshrink_active_listが呼ばれないので、んな所で判定するのが間違ってる)
一度でもmemory pressure状態になると二度とturn offされないからである。
どうでもいいが、パッチセットの説明にカーネルコアへの影響を最小限にした云々と書いた割りに、すでに
[1/5] おれ専用APIをselect.cに追加
[2/5] eventpollをおれの都合で書き換え
[3/5] wait.hにオレ専用APIを追加
[4/5] メモリ通知デバイスの追加 ←本当のパッチ
[5/5] vmscan.cをおれの都合で書き換え
という、どこが最小限やねんwwというパッチセットになっているのは秘密だだだ
- 関連記事
-
- CONFIG_VIRT_CPU_ACCOUNTINGまとめ (2008/01/01)
- mem notification v4 候補 (2007/12/31)
- .quiltrcの使い方おぼえた (2007/12/29)