ablog

不器用で落着きのない技術者のメモ

2015-01-01から1年間の記事一覧

大きなテキストファイルを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 http://www.d3.dion.ne.jp/~koetaka/demon2.html ���s�v�f�[�����̒��~(CentOS6)�����S�҂̂��߂�Linux�T�[�o�[�\�z�u��(CentOS �����T�[�o�[�Ή…

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…

OpenJDK の HotSpot のソースコードを読む

素敵なサイト 徹底解剖「G1GC」実装編 HotSpot Memo ただのメモ OpenJDK をダウンロードする http://download.java.net/openjdk/jdk7/ から openjdk-7-fcs-src-b147-27_jun_2011.zip をダウンロードする。 解凍する $ unzip openjdk-7-fcs-src-b147-27_jun_2…

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

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