「linux」の記事
16件 RSS で購読
16件
O_DIRECTのアライメント要件は推測せずstatxで問い合わせる
Linux O_DIRECTのバッファアドレス・オフセット・長さのアライメントはファイルシステムとカーネルで異なります。Linux 6.1のSTATX_DIOALIGNと6.14のSTATX_DIO_READ_ALIGNで値を取得し、stx_maskを確認する方法をまとめます。
strace に clock_gettime() が出てこない理由:Linux の vDSO
プログラムは clock_gettime() を呼んでいるのに strace には出てこないことがあります。Linux カーネルがプロセスに組み込む vDSO とは何か、トレース結果をどう読めばよいかをまとめます。
CPUアフィニティを0-7にしたのに2-3でしか動かない: Linuxのcpusetがマスクを絞る仕組み
sched_setaffinityに渡したCPUマスクは、cpuset/cgroupが許可するCPUや実在するCPUと黙って積集合を取られます。実際に許可されたCPUの確認方法とEINVALの切り分けを、manページをもとに整理します。
perf c2cでfalse sharingを見つける: 1本のキャッシュラインを奪い合うコードの読み方
スレッドを増やしても速くならないとき疑うべきfalse sharingを、Linuxのperf c2cで見つける方法。記録とレポートのオプション、オフセットの読み方、CPUごとの対応差、緩和策を公式ドキュメントに基づいて整理します。
Linux カーネルの rbtree:比較関数を保持せず、ノードを構造体に埋め込む赤黒木
Linux の赤黒木は比較関数を保持しません。ノードの埋め込み、自分で書く探索・挿入ループと呼び出しごとに比較関数を受け取るヘルパー、色ビット、cached・augmented 木、ロックなし探索の限界を v6.17 のソースで整理します。
write() が成功してもディスクに書かれたとは限らない:短い書き込み、遅れて届くエラー、fsync
write() の成功はディスクへの記録を意味しません。短い書き込みの扱い、Linux 4.13 以降の writeback エラー報告、fsync と fdatasync の範囲、新規ファイルや rename の後にディレクトリの fsync が要る理由をまとめました。
Linux の Transparent Huge Pages 設定の読み方:enabled、サイズ別設定、madvise、khugepaged
THP の設定は最上位の enabled とサイズ別の hugepages-<size>kB/enabled に分かれています。inherit、MADV_HUGEPAGE と MADV_NOHUGEPAGE、khugepaged の範囲、/proc と sysfs で実際の使用を確認する方法をカーネル文書に沿って説明します。
Linux のメモリオーバーコミット: overcommit_memory の 0・1・2 と CommitLimit の読み方
Linux がメモリ確保の要求をどこまで厳しく判定するかを決める vm.overcommit_memory の 3 つのモード、/proc/meminfo の CommitLimit と Committed_AS の読み方、モード 2 に切り替える前に確認する点をカーネルドキュメントに沿って整理します。
Linux の PSI の読み方: /proc/pressure の some・full・avg・total
/proc/pressure の some と full、avg10・avg60・avg300、total がそれぞれ何を測っているのか、iowait との違い、しきい値トリガーの制約をカーネルドキュメントに沿って整理します。
Linuxのマイナー/メジャーページフォルト: ru_minfltとru_majfltが数えるもの
Linuxのgetrusageのru_minfltとru_majfltは、処理にI/Oが必要だったかでページフォルトを分けます。2つのカウンタが数えるものと、メジャーフォルト数をディスク読み込み回数と読めない理由をman-pages 6.19基準で整理します。
ロードアベレージ4.0は高いのか:Linuxの負荷平均が数えるものと1・5・15分の意味
LinuxのロードアベレージはCPU使用率ではなく、実行中・実行待ち(R)と割り込み不可の待機(D)のタスク数の指数平均です。カーネルソースとmanページから計算方法、CPU数との読み方、PSIとの違いをまとめました。
timeのreal・user・sysの違い:経過時間とCPU時間
timeコマンドのreal、user、sysがそれぞれ何を数えるかをPOSIXの定義で整理し、user+sysがrealを超える理由、シェルのtimeと/usr/bin/timeの違いを説明します。
Linux の free コマンドで free が少ないとき:buff/cache と available の読み方
free コマンドの free 欄が小さくても、メモリ不足とは限りません。buff/cache、available、used の意味を /proc/meminfo とカーネルのソースから確認し、キャッシュを習慣的に破棄すると性能に影響しうる理由を説明します。
TIME-WAITのソケットが溜まる理由:TCPの2×MSLとLinuxの60秒、tcp_fin_timeoutの誤解
TCPで先に接続を閉じた側がTIME-WAITにとどまる理由と、RFC 9293の2×MSL、Linuxで固定の60秒を整理しました。tcp_fin_timeoutが実際に決めるものとtcp_tw_reuseの既定値も扱います。
chmod 755と644の意味:数字とrwxの対応、ディレクトリのx権限
chmod 755の7や5は、読み取り・書き込み・実行のビットを足した8進数です。POSIXをもとに、数字とrwxの対応、所有者・グループ・その他の判定、ディレクトリでのr・w・xの意味、umaskとchmod -Rの注意点をまとめました。
ファイルを削除してもディスク容量が空かない理由:unlinkと開いたままのファイル
rmで大きなファイルを消してもdfの空き容量が増えないことがあります。POSIXが定めるリンク数と開いたファイルの規則、duとdfの結果が食い違う理由、Linuxで原因を探して容量を取り戻す手順をまとめました。
該当する記事がありません。別の言葉で検索してみてください。