今日読んだ分をざっくりとtweetから持ってきた
“Btrfs: add support for blkio controllers” / “kernel/git/torvalds/linux.git - Linux kernel source tree” http://t.co/w1lWm62WMD
— キーリ (@naota344) 2015, 9月 7
Btrfsは独自にbioをsubmitしているので、blkio controllerにacountingされていなかったのを直したような感じ。複数disk対応にはまだ作業が必要とか
これ踏んでたのかなあ…“Btrfs: check if previous transaction aborted to avoid fs corruption” / “kernel/git/torvalds/linux.git -…” http://t.co/OYmyYjaue8
— キーリ (@naota344) 2015, 9月 7
transactionが別のtransactionの完了を待っていたが、正常終了かどうかをcheckしていなかった。そのためcommitされていないerror transactionに依存する形でtransactionがcommitされてたという問題のfix
btrfs, empty chunkのauto cleanupが入ったのか。あいてるように見えるのに書けないの問題が少し解消するかな
— キーリ (@naota344) 2015, 9月 7
Btrfsではdfで空きスペースがあるのにfileが作れない消せないということがあって問題とされていた. 原因の1つとして、空になったchunkを回収してない -> 新しいchunkをallocできないというのがあった. いつのまにか空のchunkを回収するコードが入っていたらしい。
“inode: don't softlockup when evicting inodes” / “kernel/git/torvalds/linux.git - Linux kernel source tree” http://t.co/oH5ck1Wztx
— キーリ (@naota344) 2015, 9月 7
148GB RAMなマシンで、inodeをメモリから消すほどメモリがいっぱいにならない
なので、数億のempty fileを作ってumountすると数億分のevict inodeが起きてsoft lockupするbugのfix
https://t.co/bUSBn2qU4N
— キーリ (@naota344) 2015, 9月 7
これはそのまま。evict inodeに時間がかかるほど大量のinodeを溜め込めるメモリがあるマシンじゃないといけないけど、そういうこともあるのかーと面白かった。
“sync: serialise per-superblock sync operations” / “kernel/git/torvalds/linux.git - Linux kernel source tree” http://t.co/Uop8AmRVeS
— キーリ (@naota344) 2015, 9月 7
複数のsyncが同時に同じFSにかかると、inode listのspin lockがcontentionし、無駄にCPUを使ってしまう。
mutex lockをとるようにして、syncをserialiseした
https://t.co/g4KJa0hut1
— キーリ (@naota344) 2015, 9月 7
syncで無駄にCPUを使うことがなくなってよかったというはなし。ついついsyncしちゃう人に朗報?(謎
“writeback: plug writeback at a high level” / “kernel/git/torvalds/linux.git - Linux kernel source tree” http://t.co/bfUtYrS7As
— キーリ (@naota344) 2015, 9月 7
これまでper-mappingでIOをまとめていた。複数fileに同時にwriteし、disk上でその2つのfileのblockが連続でも、2つのIOはまとめられない。writebackのplugを行ないIOがまとまるようにした
https://t.co/DJxlPV1Ap3
— キーリ (@naota344) 2015, 9月 8
さっきのcommit, benchmarkがよくて,大量の4KB fileを作るテストだけれど95%のIOPS削減(それだけ大きなIOにまとめられた)し、bandwidthが38%改善している。実行時間も26%減少。
— キーリ (@naota344) 2015, 9月 8
benchがSSDで行なわれているので、HDDではもっとbenefitが出るだろう。
— キーリ (@naota344) 2015, 9月 8
複数fileに同時にIO operation(しかもdisk上では並んでいる & fsyncはしてない)というのは実際どういうオペレーションになるのか少し不明だけどSSDでもこれだけパフォーマンス改善するのは面白い
GoogleのKernelThreadSanitizerが、swaponのpotential data raceを発見
https://t.co/xxedbvj3e3
— キーリ (@naota344) 2015, 9月 8
KTSan面白そうなので触ってみたい
おっxfsのcorruption情報だ(log recoveryのsizeに不正なものを入れとくやつ)“xfs: validate transaction header length on log recovery” / “ker…” http://t.co/i9xxbsduwP
— キーリ (@naota344) 2015, 9月 8
Linux 4.3結構xfs log recoveryのとこにfix入ってるな。log がcorruptした時にそのまま進んでしまわないようなcheckが多く導入されている感じ。
— キーリ (@naota344) 2015, 9月 8
log部分のchecksumとかsizeとか、logのcancelが正しく動くかなどlogまわりに多くのfixが入っている
“xfs: Fix file type directory corruption for btree directories” / “kernel/git/torvalds/linux.git - Linux kernel sou…” http://t.co/sZkJKN3IDb
— キーリ (@naota344) 2015, 9月 8
ディレクトリエントリ置換前のfiletypeと置換後のfiletypeをうっかり同じ変数に保存していたため, filetypeがおかしくなってたよというバグ. これは怖い…