Linux

Linux のページ回収まわりのカーネルパラメータ

Linux(kernel 2.6.32-303 以降)のDBサーバでメモリ16GB、スワップ領域16GBの場合、ざっくりこんな感じが良いかなという妄想メモ。 vm.swapiness=1 vm.overcommit_memory=2 vm.overcommit_ratio=80 vm.min_free_kbytes=524288 vm.extra_free_kbytes=1048576(k…

RHEL6.4(kernel 2.6.32-303)以降の vm.swappiness=0 と OOM Killer の関係

RHEL6.4(kernel 2.6.32-303)以降、vm.swappiness=0 にすると OOM Killer が発動しやすくなるので、1 にしましょうという話を見かけるのでメモ。詳しくは後日調べる予定。 Deploying Oracle Database 12c on Red Hat Enterprise Linux 6 Best Practices Warni…

disk_asynch_io=false ならASMに対して同期I/O(pwrite)になる

As you know ASM is doing non (operating system) buffered I/O (also known as ‘DIO’ or Direct I/O) regardless of the oracle database filesystemio_options parameter.But what’s about : Asynchronous/Synchronous I/O ?If you have a look to MOS no…

Oracle Database on Linux で SGA(共有メモリ) のスワップアウトを防ぐ方法

Oracle Database の初期化パラメータ SGA_LOCK = true を設定する SGA(共有メモリ) に HugePages を使う Linux のカーネルパラメータ vm.swappiness=0 にする(Linux Kernel 3.5 未満は 0 にしてもページアウトされることがある)

"ipcs -um"で共有メモリがスワップアウトされているか確認する

ipcs -um の "pages swapped" がスワップアウト(ページアウト)されたページ数。 これに 4KB を掛けるとページアウトされたサイズを算出できる。 $ ipcs -um ------ Shared Memory Status -------- segments allocated 39 pages allocated 3464 ★仮想メモリに…

NFSでI/Oシステムコール発行後に応答がない場合、プロセスを kill できるか

NFSのマウントオプションで soft と hard がある。プロセスがI/Oシステムコールを発行してユーザーモードからカーネルモードにコンテキストスイッチした後、応答がないと、soft の場合はリトライを繰返した後にI/Oエラーになるが、hard の場合は応答があるま…

vm.min_free_kbytes からの wmark_{min|low|high} 算出式

Linux のページ回収の閾値である wmark_min、wmark_low、wmark_high の算出式を調べたメモ。 算出式 正確には NUMA ノードの ZONE 毎に計算されるが、合計の概算は下記の式で計算できる。 min_free_kbytes = sqrt(物理メモリサイズ(KB) * 16) wmark_min = mi…

ext4 の性能についての資料

ただのメモ Scaling the Linux Kernel(Revisited): Using ext4 as a Case Study by Theodore Ts'o (Google)

Red Hat Enterprise Linux のリリースとカーネルのバージョンの対応を調べるページ

Red Hat Enterprise Linux のリリース日と収録カーネルの一覧 - Red Hat Customer Portal 関連 Oracle Linux のディストリビューションとカーネルバージョンを調べる方法 - ablog

NFS のマウントオプションの hard と soft について調べたメモ

NFS のマウントオプションの hard、soft について調べたメモ(Linux限定)。 まとめ hard の動作 NFS サーバが応答するまで書込を永遠に繰返す。 アプリケーションはI/Oを発行した後、完了待ちでスリープし続ける。 hard と intr を併用するとシグナルを送って…

"Reducing Memory Access Latency" が素晴らしすぎる

Reducing Memory Access Latency by Satoru Moriya (Hitachi LTC) が素晴らしすぎるのでメモ。 まとめ vm.swappiness = 0 により、解放可能なページキャッシュがあるうちはプロセスのメモリ(anon page)をスワップアウトしないようにできる*1。 swappines=0 …

NFSの排他制御について

NFSの排他制御についてメモ(Linux限定)Managing Nfs and Nis作者: Hal Stern,Mike Eisler,Ricardo Labiaga出版社/メーカー: Oreilly & Associates Inc発売日: 2001/08/15メディア: ペーパーバックこの商品を含むブログを見る 11.2 NFS and file locking Mand…

Linux のページテーブルのサイズの見方と見積式

Linux Kernel 2.6 (x86-64) でのページテーブルのサイズの確認方法と見積式を調べてみた。 あっているか自信のないところもある&まだ書きかけ。 ページテーブルのサイズの見方 OS全体のページテーブルのサイズ $ cat /proc/meminfo MemTotal: 16158544 kB M…

pgrep で子プロセスの PID を調べる

子プロセスの PID を取得したい場合、人間が見るには pstree が便利だけど、 $ pstree -alp $$ zsh,13840 ├─pstree,14216 -alp 13840 ├─zsh,13940 │ └─sleep,14213 10 └─zsh,13992 └─sleep,14215 10 シェルスクリプトで子プロセスの PID を取得して何か自動…

プロセスのランキュー待ち時間とI/O待ち時間を調べる

cat file|awk では実行時間 システムコールで取得します。catのプロセスと awk のプロセスが並列実行されている期間があるため、実行時間 (中略) 大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog と書きましたが、プロセスの…

funcgraph で Linux カーネル内のボトルネックをミクロに追跡する

perf + Flame Graphs で Linux カーネル内のボトルネックを特定する - ablog で Linux カーネル内のボトルネックをマクロに分析する方法を紹介しましたが*1、 strace でI/Oシステムコールのレスポンスを調べると遅く*2、 iostat の await でカーネルのブロッ…

perf + Flame Graphs で Linux カーネル内のボトルネックを特定する

Linuxでddで1GBのファイルを作成し perf でプロファイリングし、Flame Graph (炎のグラフ?)にして可視化したものです。 Flame Graphs は perf(Linux)、SystemTap(Linux)、DTrace(Solaris、Oracle Linux(UEK)、Mac OS X、FreeBSD)、XPerf.exe(Windows) など…

tar.xz を解凍する

$ tar Jxvf coreutils-8.23.tar.xz 参考 xz はLZMA2圧縮アルゴリズムを利用する可逆圧縮ファイルフォーマットである。 xzは、gzipやbzip2のように、複数の圧縮ファイル結合をサポートしているが、二つ以上のターゲットファイルを一つのアーカイブにまとめる…

compat-libstdc++ をインストールしようとすると libc.so.6 が必要と怒られる

ちょっと質問されて回答したことをメモ。 事象 # yum install compat-libstdc++-33-3.2.3-69.el6.i686 ... エラー: 依存性の欠如: libc.so.6 は compat-libstdc++-33-3.2.3-69.el6.i686 に必要とされています 調査方法 yum provides で調べると 64bit の gli…

Please run yum-complete-transaction as root

事象 yum update 後に There are unfinished transactions remaining. Please run yum-complete-transaction as root. と怒られた。 対応 root で yum-complete-transaction を実行する。 # yum-complete-transaction ... Nothing in the unfinished transac…

RHEL6互換ディストリビューションでの不要サービス

RHEL互換ディストリビューションでの不要サービスを調べたメモ。 不要なデーモンを停止させる (CentOS 6.5) - Qiita 不要なサービスを停止する ◇不要デーモンの停止(CentOS6)◇初心者のためのLinuxサーバー構築講座(CentOS 自宅サーバー対応)☆お便利サーバー.…

zipに圧縮 on Linux

$ zip -r csv csv

chrome を 更新した

[root@yazekats-linux ~]# yum update google-chrome-stable ... Updated: google-chrome-stable.x86_64 0:40.0.2214.91-1 Complete! [root@yazekats-linux ~]# cat /etc/issue Oracle Linux Server release 6.4 Kernel \r on an \m [root@yazekats-linux ~]…

strace で出力される resumed の意味

If a system call is being executed and meanwhile another one is being called from a different thread/process then strace will try to preserve the order of those events and mark the ongoing call as being unfinished. When the call returns it…

strace でシステムコールの所要時間を調べる

システムコールの所要時間は strace の -T オプションで調べることができる。 上はEXCELでピボットテーブルを使ってグラフ化したもの I/Oレスポンス(read システムコールの所要時間)は5〜15ミリ秒であることがわかる 例 strace でシステムコールのトレース…

Oracle Database のインストーラから特定のバイナリを見つけて取り出す

$ find . -type f -name '*.jar' -print|while read LINE do jar tvf ${LINE}|perl -nle "/\/oracle$/ and print \"${LINE}\" . qq/\$_/" done ./stage/Components/oracle.rdbms/11.2.0.4.0/1/DataFiles/filegroup38.jar 0 Sat Aug 24 11:43:30 JST 2013 bin…

/proc/meminfo の Inactive は利用可能なメモリ領域ではない

ちょくちょく、/proc/meminfo の Active が使用中、Inactive は使用可能な領域ですよねと聞かれることがあり、違いますよと話すことがあるので、出典をメモっておく。 がちゃぴん先生のブログ Activeはページキャッシュや無名ページ(注3)のうち、最近利用…

top でプロセスがスリープしている原因を表示する

がちゃぴん先生のブログに さだださんと雑談していて、Solarisはページフォルトで寝ているとtopのステータスにそう表示されるから便利とかいう話に。それLinuxでも出来るよ。wchan表示したら、スリープしてる関数名表示されるから一発だよ。 やりかたtop を…

dstat ってオプション多いですね

man 眺めてるといろいろありますね。 $ dstat -tmcdn --aio --top-bio --top-cpu --top-mem 5

ps で表示されるCPU使用率 = CPU時間 / 実行時間

Linux でCPU使用率の高いプロセスを探す時、ps で表示されるCPU使用率は累計値になるので、top を使うけど、ps で表示されるCPU使用率の算出式が気になったので、調べてみた。 算出式 CPU使用率 = ( プロセスが使用したCPU時間 / プロセスの実行時間 ) * 100…