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…

top でプロセスが使っていたCPU番号を表示する

top を実行して、f 押して j 押せばプロセスが最後に使ったCPU番号を表示できる。フィールドの選択ができるのは知っていたけど、CPU番号があるのは知らなかった。h でヘルプは見ていたが、今までなんで気づかなかったんだろう。 top を実行して $ top f 押し…

top -H でCPU使用率の高いスレッドを調べる

top でスレッド単位で表示させたい場合は -H オプションを使う。 $ top -H top を起動してから、H(shift + h) でもよい。 $ man top -H : Threads toggle Starts top with the last remembered ’H’ state reversed. When this toggle is On, all individual …

gdb でレジスタの値を書き換えてみる

同僚に教えてもらった gdb で実行中のプロセスにアタッチして、writeシステムコール発行直前でレジスタのファイルディスクリプタを書換えるというのを試してみた。 write_loop.c #include <unistd.h> int main(void) { while(1) { write(1, "foo\n", 4); } } コンパイ</unistd.h>…

Huge Page の解放について

ちょっと検証してみたメモ。 検証結果 vm.nr_hugepages を設定する [root@yazekats-linux ~]# grep -i hugepage /proc/meminfo AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB [root…

micbench をインストールしてみた

インストール 必要なパッケージをインストールする $ sudo yum install numactl $ sudo yum install numactl-devel micbench を入手してインストールする $ git clone git://github.com/hayamiz/micbench.git $ cd micbench/ $ ./autogen.sh $ ./configure $…

Perfmonger をインストールしてみた

インストール $ git clone git://github.com/hayamiz/perfmonger.git $ cd perfmonger/ $ ./autogen.sh $ ./configure $ sudo make install 使ってみる $ perfmonger record -i 0.1 {"time": 1418432543.6794, "cpuinfo": {"nr_cpu": 4, "all": {"usr": 0.00…

prociostat.pl と visualize_prociostat.R で Linux のプロセスのボトルネックを分析する

はじまった URL2014-12-09 19:29:19 via Tweetbot for iΟS今日もモツ鍋を堪能されていた模様の @hasegaw さんが Linux のプロセスのアクティビティを追跡してグラフ化するツールを Perl + R で作られたということで早速使ってみました。 プロセスがユーザー…

"Linuxのしくみを学ぶ - プロセス管理とスケジューリング"を読んだ

id:syuu1228 さんのLinuxのしくみを学ぶ - プロセス管理とスケジューリング がとてもわかりやすかった。ここまで分かりやすさと深さを両立した説明は初めて読んだ。プロセススケジューラの自分用の備忘録です。 タイマ割込みのタイミングでプロセスの切り替…

HugePage は free コマンドで見ると used に計上される(2)

HugePages は free コマンドで見ると used に計上される - ablog の続き。 Huge Page はユーザープロセスから使われる前はOSカーネル内に確保され、used に計上されるが、ユーザプロセスが使用すると cahched に計上されるぽい。 検証結果 # ulimit -l unlim…

「シンプルでシステマチックなLinux性能分析方法」 @ db tech showcase 東京 2014

http://www.insight-tec.com/dbts-tokyo-2014.html で「シンプルでシステマチックなLinux性能分析方法」というお題でしゃべりました。資料は公開しませんが、内容は Brendan Gregg の Systems Performance Book に書かれていることばかりです。Brendan は Su…

iostat はどのように %util を算出しているか(3)

.@Etsukata さんのエントリで1年間の疑問が解消。Linux Kernel 開発者による iostat 解説、ありがたし。URL2014-10-07 07:13:27 via Twitter Web Client iostat はどのように %util を算出しているか - ablog iostat はどのように %util を算出しているか(2)…

LinuxでCPU使用率を上げるコマンド

いいものを見つけたのでコピペ。 yes >> /dev/null & 最後に & お勧め w(二つターミナルが必要でなくなる。)ちなみに メモリ負荷をあげる魔法のコマンド /dev/null < $(yes) & LinuxでCPU負荷を上げる魔法のコマンド - Qiita ">>" は ">" でも良いと思う…

vmstat の sys は soft や irq も含む

Linux で mpstat だとカーネルモードで使用されたCPU使用率は sys、soft(ソフトウェア割込み)、irq(ハードウェア割込み) が別々に表示される。vmstat は sy だけなので、たぶん soft と irq も含まれるんだろうと思っていた。vmstat のソースを見るとやはり…

yum update したら"Another app is currently holding the yum lock; waiting for it to exit..."と怒られる

事象 yum でパッケージを update しようとすると、以下のメッセージが出力される。 # yum update jre Loaded plugins: security Existing lock /var/run/yum.pid: another copy is running as pid 3982. Another app is currently holding the yum lock; wai…

oh-my-zsh をインストールしてみた

Oracle Linux 6.4 に oh-my-zsh をインストールしてみた。 oh-my-zsh をインストールする % curl -L http://install.ohmyz.sh | sh oh-my-zsh のテーマを変更する ~.zshrc を以下の通り編集する #ZSH_THEME="robbyrussell" ZSH_THEME="agnoster" Powerline …

tree コマンドをインストールした

今更、マイPC(Oracle Linux 6.4)に tree コマンドがインストールされてないことに気づいたのでインストールした。 # yum install tree

curlでファイルをダウンロードする

自分もいつもオプションを忘れるのでメモ Webからファイルをダウンロードするときwgetを使います。 wgetは、リダイレクトに対応していないので、リダイレクトを使っているサイトの場合には、curlを使います。 オプションをいつも忘れてしまうので、書いてお…

iconvで文字コードを変換する

例えば、SJISからUTF8に変換する場合は以下の通り。 $ iconv -f SJIS -t UTF8 weekly_repot.rst > weekly_repot.txt 参考 Linuxコマンド集 - 【iconv】文字コードを変換して出力する:ITpro 関連 文字コードを変換する Perl ワンライナー - ablog

VirtualBox を 4.3.10 から 4.3.16 にアップグレードしたメモ

VirtualBox を 4.3.10 から 4.3.16 にアップグレードした。ゲストの Windows 7 でフルスクリーンモードのときにタスクバーにマウスポインタを合わせようとすると、VirtualBox のミニツールバーが反応するのがストレスフルだったが、ついに改善されているよう…

bondingでActiveなインターフェースの確認方法と変更方法

確認方法 /proc/net/bonding/bond0 $ cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.4.0 (October 7, 2008) Bonding Mode: fault-tolerance (active-backup) Primary Slave: eth0 ★ eth0 が Primary Currently Active Slave: eth0 ★ eth…