NetBSD UVM page coloringメモ
uvm_pagermapin(9) は VAC index に合わせてバッファずらしてるだけだから 自分自身の中身だけでなんとかすればよくて引数は無関係
2011-10-19 19:47:02sys/uvm の外から uvm(9) 関連を呼んでる部分が正しく引数指定しているかなんてチェックしきれんのだけど
2011-10-19 19:49:07COLORMATCHが何するものかなんて理解して指定している人なんていないだろうから大丈夫という前提でいいのか? mips の下はあるかもしれないけど、さすがにそっちは書いた本人が一応見てるだろうし
2011-10-19 19:51:57とにかく走らせて KASSERT(9) で引っ掛けろということなのか。そういう割り切りもあるかもしれないけれど、それならそれでもっとコメント書くとか設計方針説明するとかしてくれないと誰も追いついて来ない罠
2011-10-19 19:55:02uvm_map(9)でUVM_FLAG_COLORMATCHを指定したとき、PACなら何もする必要ないわけだけれど現状のコードのままでvac_ncolor=1としてpage color判定すればそのままでいけるか
2011-10-19 21:49:46あとは バケツの数>vac_ncolors で破綻するようなところがないかどうかのチェックか。たぶん大丈夫という気はするけれど
2011-10-19 21:51:07vac_ncolors > 1 かつ pac_ncolors > vac_ncolors の場合、つまりL1がVIPTでL2が巨大PIPTの場合に uvm_pagealloc(9)でPACページカラーリング割り当てする意味があるのかというとベンチマークしてみないとわからんけど
2011-10-19 21:55:31VA index=PA index の制約を課すことでわりと現実的な実装になっているという気はするけれど、じゃあindexの異なる複数のVAを共有マップするような操作をしたときに何が起こるのかがいまいち読み取れない
2011-10-19 22:00:06src/sys/miscfs/genfs/genfs_io.c で uvmexp.colormask 参照してるな。何してんだろ
2011-10-19 22:18:44src/sys/dev/mm.c もVAでOK。こんなもんか? MDでのuvmexp.ncolorsの参照は代入だけだと思うけど、参照してるところあるのか?
2011-10-19 22:27:29vmstat(1) で見えてうれしいことってあんまりない気がするけど。PAC coloringしかしてないなら特に。デバッグでバケツの数が気になるくらいか?
2011-10-19 22:34:13昨日時点の PR kern/45361 workaroundテキトーパッチ http://t.co/D6SISnbu ただ、元がどう落ちてるのかいまいち不明
2011-10-19 23:25:22もう少しマシな直し方をしようとすると結局全部直すハメになるかなあ。MDいじらず現状の uvmexp.ncolors を ifdef で vac_ncolors と pac_ncolors のどちらかに放り込む、という案はあるけど recolor が呼ばれたときどうするかとか微妙
2011-10-19 23:32:48Core 2 Duo E7400だと cpu0: L2 cache 3MB 64B/line 12-way で 64 page colors か。6MB L2 の E8500 だと 128 color なのか 24-way なのか
2011-10-19 23:54:50