2019年12月アーカイブ

Linux memo 2019/12/04

● __invalidate_device()がらみ
憂鬱な午後のひととき(2012年10月26日) - melancholic afternoon
http://herumi.in.coocan.jp/diary/1210.html
Kernel fcache-bug (ファイルキャッシュクリアの謎) - SlideShare
https://www.slideshare.net/herumi/kernel-fcachebug
__invalidate_device()がらみで調べてると上記が見つかった。kernelのバグの話ではあるものの、なんてことはない、bd_invalidated = 1をクリアし忘れているという話なんだけど、それが入ったのが2013年2月22日の
7630b661da330b35dd57b6f5d6d62b386f2dd751で、リリースされたのはLinux-3.9なので2013年4月28日。これほど簡単で明らかな問題でも時間がかかっている。
しかも元の指摘「bd_invalidated = 0はcheck_disk_size_change()が呼ばれるたびに個別にやるのじゃなくて, check_disk_size_change()の中でやれば一度ですむし忘れない」は、2019年11月14日(979c690d9a017db14b7759a099478e3faad991ac)とごく最近まで放置されている。というかまだmergeウィンドウ内でリリースされていない。Linuxのメンテナから遠いとこうなってしまうのか、と思うなど。
そいや、なぜかバズってた↓の話もおおむねこのへんのコードだったか。
ファイルシステムサイズの拡張時にデータベースアクセスがスローダウンする問題の解決 - Cybozu Inside Out | サイボウズエンジニアのブログ
https://blog.cybozu.io/entry/2018/06/28/080000

● pigz
pigzは、圧縮はマルチスレッドでやるけど、解凍はシングルでしかやらない(入出力とかの付属処理はマルチスレッドでやる)、ってman pigz(1)に書いてあった。
pixzは、昔は解凍がシングルだったような記憶があるけど、今はマルチスレッドでやってくれているっぽかった。

● pipe
pipeはデフォルトでは16ページ(PIPE_DEF_BUFFERS)のkernel内部バッファで処理する。確保は最初は1ページだけやっておいて必要になったらあとから追加確保するっぽい。変更する場合はfcntl(2)のF_SETPIPE_SZで。上限は非特権ユーザの場合は1048576(1MB)かsoftlimit/hardlimit、特権ユーザの場合は特になさげ?(unsigned int上限までいけそう?)

● vfs_cache_pressure
いまいち使い所がわからない。ファイルの中身はどうでもよくて大量のinodeを扱わないといけない場合?
ちなみに、N : 100 のNを設定することになり、小さくするとページキャッシュが、大きくするとdentry/inodeが破棄されやすくなる模様。

● kernel/Documentation/*.rst
kernelに含まれるDocumentationはSphinxによる文章化が進んでいるけど、簡単にHTML化できるようになったおかげで、ぐぐるとHTMLのドキュメントをおいているだけのページが大量に引っかかるようになってきた。ドキュメント見てもよくわからんから概要がわかるページを求めて検索してるのに、こういうのはちょっとなぁ...
まぁあれか、解説するページを書くくらいならupstreamのDocumentationに反映させろってか?

● rtmutex
rt_mutexとfutex_piに絡んだメモを書こうと思ったが、このブログは余白が狭いみたいなので、また改めてQiitaにでも書こうと思う。
...あれ、余白が狭い場合は省略するんだったっけ?
 → ※2019/12/22追記 書きました

このアーカイブについて

このページには、2019年12月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2019年11月です。

次のアーカイブは2020年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0