読者です 読者をやめる 読者になる 読者になる

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…

physical reads prefetch warmup

今更なネタですがメモ。 Oracle Database (10.1以降)でバッファキャッシュがスカスカの場合、アクセスパスが INDEX UNIQUE/RANGE SCAN でも db file scattered read でマルチブロックリードすることがある。 これはブロックにアクセスするついでに近くのブロ…

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 ★仮想メモリに…

書籍”Oracle の現場を効率化する100の技”の紹介

この本を一言で言うと「オラクルコンサルタントのノウハウモロ見せ」です。Oracleの現場を効率化する100の技作者: 鈴木健吾,玉置雄大,塩原浩太,小林修,大森慎司,内村友亮出版社/メーカー: 技術評論社発売日: 2015/05/26メディア: 単行本(ソフトカバー)この…

JPOUG> SET EVENTS 20151017 に参加しました

JPOUG> SET EVENTS 20151017 | Japan Oracle User Group (JPOUG) JPOUG > SET EVENTS 20151017 - Togetterまとめ に参加しました 写真は @tadayima_jpさんのツイート から頂きました。発表はしていませんが林優子さんと小田さんの”DBエンジニアのスキルの現…

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…

oracle.jdbc.ReadTimeout はソケット読込時のタイムアウト

Oracle JDBC Thin Diver の oracle.jdbc.ReadTimeout について調べたことをメモ。 Oracle ACE の id:yamadamn さんのスライドがわかりやすいです。 Oracle JDBCドライバプロパティの活用 from Oracle Fusion Middleware P.11 P.12 まとめ Oracle JDBC Thin D…

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

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

Oracle RAC の投票ディスクについて

オラクルマスター教科書 ORACLE MASTER Expert 【RAC】編(試験番号:1Z0-048) P.460 投票ディスクの機能 CSSD(Cluster Syncronization Service デーモン)は、インターコネクトを介してほかのノードと通信し、通信状況を投票ディスクに格納します。インターコ…

VirtualBox を 4.3.28 から 4.3.30 にアップグレードした

手順は VirtualBox を 4.3.16 から 4.3.20 にアップグレードしたメモ - ablog と同じ

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 と書きましたが、プロセスの…

”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由

大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablog を書きましたが、awk file > file より cat file|awk > file が速い環境は稀なようなので、私の環境でなぜ cat file|awk > file のほうが速いのか調べてみました。プロセススケ…

大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由

以下、長々と書いてますが、結論は ”私の環境で”大きなテキストファイルをawkで処理するときにcatで投げ込むと速い理由 - ablogに書いてます はじめに awk file より cat file|awk のほうが速いという以下のブログエントリが興味深いので調べてみました。 ち…

SQL*Plus で spool やリダイレクトするとスペースがタブになるのが嫌な場合は set tab off

質問されたので、書いときます。 次は SQL*Plus の SET システム変数 TAB。SET TAB { ON | OFF } - SETシステム変数の一覧 sqlplus の出力をファイルに spool した後に眺めてみると、画面上では空白だと思っていたものが実は TAB 文字でした残念!という事が…

Perlワンライナー集

障害対応でのログ解析、ソースコードの調査といったテキスト処理で使った Perl ワンライナー集です。 マルチライナーやいけてないのもありますw Perl ワンライナーの好きなところ Perl は Oracle Database (10g以降) に同梱されているので、Windows プラット…

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

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

direct path read か db file scattered read か

Serial direct path reads were first introduced in Oracle 11G which were noticed by many customers (in both positive and negative ways) who upgraded from the earlier releases. Back then I did a quick write up on the subject to try and tackl…

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) など…

実行計画が変動したSQLの実行計画を一括出力する

DBA_HIST_SQL_PLAN に PLAN_HASH_VALUE が複数ある SQL の実行計画を DBMS_XPLAN.DISPLAY_AWR で一括出力する SQL。再帰SQLが出力されないよう OBJECT_OWNER で絞っている。 SQL set pagesize 50000 set linesize 200 select b.* from ( select distinct sql…

実行計画の OPERATION と OPTION は X$XPLTON と X$XPLTOO に

実行計画の OPERATION ってどこのX$表に入っているんだろうと思って調べたら、tech.E2SN に書かれていた。 X$XPLTON (eXPLain rowsource Operator Names) (11.1 -) X$XPLTOO (eXPLain rowsource Operator Options) (11.1 -) DBA_HIST_PLAN_OPERATION_NAME (1…

VMware の VMFS と RDM の比較

VMware の VMFS と RDM の比較 VMFS(Virtual Machine File System) スナップショットを取得できる。 Storage vMotion を使える。 RDM(Raw Device Mapping) ストレージバックアップを取る場合はRDMを使う必要がある。 rawデバイスだがVMFSのマップファイルに…

SQLチューニング原論(仮)

もわっとしたイメージ重視のテキトーメモ。正確性、網羅性は重視していない。 チューニングの三原則 仕事量(計算量)を減らす 仕事量は CPUコスト + I/Oコスト とも言える 行単位でデータが必要な場合は行指向、列方向でデータが必要な場合は列指向など 圧…

xargs -P vs split -n r/ の性能比較

gnu

ちょっとだけ調べたのでメモ。 実行時間(/usr/bin/time -p) split は xargs より 2.6倍速い(xargs: 4.30秒、split: 1.66秒) xargs -P $ seq 10e3 | /usr/bin/time -p xargs -I{} -P4 sh -c '/bin/true {}' real 4.30 ★ user 4.37 sys 6.24 split -n r/ $ seq…

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…

Oracle Database でランキュー待ちは DB Time > DB CPU + non-idle wait time として現われる

CPU使用率が高くなってくると、プロセス(スレッド)がCPUを待つランキュー待ち時間が増えます。vmstatのr列などを見ればすぐにわかりますが、Oracle Database の性能分析で AWR レポートやStatspackレポートしか情報がないといった場合は以下のような兆候から…

latch系の待機時間にはCPUでスピンしている時間は含まれない

Oracle Database には latch(ラッチ) という排他制御があります。latch はスピンロックで、CPUを使って一定回数スピン(ループ)しながらロックを獲得しようとします。一定回数スピンして獲得できないとスリープします。AWR レポートや Statspack レポートに…

VMware ESX のバルーニング(balooning)について

VMware ESX はメモリのオーバーコミット、つまり、物理メモリより大きなメモリをゲストに割当てることができる。 何がうれしいかというと、「メモリの有効活用」と「ゲストの集約」ができる。 メモリ使用量が多いゲストと少ないゲストがある場合、使用量が少…

AWRレポートでページイン・ページアウトの発生状況を確認する

vmstat などでページイン、ページアウトの発生状況を確認したいが、AWRレポートしかないという場合は Operating System Statistics の VM_IN_BYTES、VM_OUT_BYTES で確認できる。 VM_IN_BYTES: Total number of bytes of data that have been paged in due t…

AWSクラウド無料利用枠を使ってみる

AWS

AWS クラウド 無料利用枠を使ってみる。 無料利用枠内に抑えるポイント EC2はマイクロインスタンスのみ インスタンス作成時に「無料利用枠の対象」と表示されているAMIを選べばよい EBSは30GB以内 1ヶ月750時間以内(750時間はサーバーの稼働時間でカウントさ…

Windows 7 on VirutalBox 4.3 のCドライブ拡張した

環境 ゲストOS: Windows 7 仮想化ソフトウェア: VirtualBox 4.3.24 ホストOS: Oracle Linux 6.4 状況 ディスクボリュームはCドライブとDドライブがあり、Cドライブの容量が足りなくなったケース。 手順 VirtualBox Manager でスナップショットを削除する Vir…

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 自宅サーバー対応)☆お便利サーバー.…

VirtualBox を 4.3.20 から 4.3.22 にアップグレードした

手順は VirtualBox を 4.3.16 から 4.3.20 にアップグレードしたメモ - ablog と同じ。 [root@yazekats-linux ~]# yum update VirtualBox-4.3 (中略) ================================================================================ Package Arch Ver…

is not null で count する SQL を Index Only "Fast Full" Scan で高速化する

is not null で count する SQL を Index Only "Fast Full" Scan で仕事(計算)量を減らして高速化してみた。インデックスを作成すると、オプティマイザが期待していた仕事(計算)量が少なくなる実行計画を選択してくれた。 チューニング結果 ビフォー 17:…

zipに圧縮 on Linux

$ zip -r csv csv

最近使った Perl ワンライナーのメモ

perl -lane '$F[2]=~s/^([a-z]+).*/$1/; $h->{$F[1]}->{$F[2]}++;END{map{$t=$_ and print $t;map{print qq/$t\t$_\t$h->{$t}->{$_}/} keys %{$h->{$_}}} keys %$h}'' strace.loggrep -hA 20 '^top -' top.logperl -lane '/top - ([\d:]+)/ and $t=$1;$F[0]=…

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 ~]…

"commit" and "log file sync"

When you commit a transaction you update the transaction table slot that identifies your transaction to show that the transaction is committed – this is a change to an undo segment header block so it generates a redo change vector. THe han…

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…