ablog

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

Linux

grep で特定の文字列を含むファイル名だけを表示する

grep で特定の文字列を含むファイル名だけを表示する。 % grep -l foo *.log dtruss.log 参考 grep で特定の文字列が含まれるファイル名だけをリストアップする方法 | ウェブル

less で - や + で始まるファイルを開く

- や + で始まるファイルを開こうとすると以下のようにエラーになるので、 $ less +ASM1_ora_19821.trc Missing filename ("less --help" for help) 以下のように -- とオプションをつけるとよい。 $ less -- +ASM1_ora_19821.trc 参考 less(1) - Linux manu…

dig コマンドで ドメインツリーを辿る

ルートDNSサーバからDNSコンテンツサーバまでのドメインツリーを辿りたい場合は dig +trace でできる。 % dig +trace d.hatena.ne.jp ; <<>> DiG 9.8.3-P1 <<>> +trace d.hatena.ne.jp ;; global options: +cmd . 143705 IN NS f.root-servers.net. . 143705…

GNU Parallel をインストールする

$ sudo yum -y install parallel

sysdig でシステムワイドに実行回数が多いシステムコールを調べる

Linux でシステムワイドに実行回数が多いシステムコールや実行時間が長いシステムコールを調べたい場合は、sysdig が便利です。 Sysdig Open Source - Getting Started With Csysdig - YouTube インストール root で以下を実行する。 rpm --import https://s…

vDSO gettimeofday

There is a Virtual Dynamic Shared Object (VDSO) implemented in the glibc runtime library. The VDSO maps some of the kernel code, which is necessary to read gettimeofday in the user-space. Standard Red Hat Enterprise Linux 5.5 allows the ge…

Linux で clocksource を変更する方法

Red Hat Enterprise Linux 6、 7 での clocksource の変更手順。 他のバージョンについてなどは How to change the clock source in the system - Red Hat Customer Portal 参照。 確認方法 現在の clocksource を確認する。 $ cat /sys/devices/system/cloc…

Linux で clocksource が xen と tsc で gettimeofday(2) の性能を比較する

Linux で clocksource が xen と tsc で gettimeofday(2) の性能を比較したメモ。 テストプログラムをコンパイルする 1億回 gettimeofday(2) を実行するテストプログラム(gettimeofday.c) #include <stdio.h> #include <sys/time.h> int main(void) { struct timeval tv; int co</sys/time.h></stdio.h>…

vmstat でタイムスタンプを表示する

vmstat: Support for timestamps with '-t' & fix for '-wd' From now the vmstat can append a timestamp to each line in the VMSTAT and DISKSTAT mode. You can achieve that with the '-t' switch. The '-w' switch now works in the DISKSTAT mode too…

nethogs でプロセス別の通信量を調べる

nethogs はネットワークの top コマンド的なもので通信量の多いプロセスをランキング表示して、秒間通信量も見ることができる。 インストール sudo yum -y install gcc-c++ libpcap-devel.x86_64 libpcap.x86_64 ncurses* git clone https://github.com/rabo…

Linux で圧縮率の低い大きなサイズのファイルを作成する

Linux で圧縮率の低い大きなサイズのファイルを作成する方法をメモ。 $ dd if=/dev/urandom of=1gb.dat bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 12.9546 s, 82.9 MB/s $ ls -lh 1gb.dat -rw-rw-r-- 1 ec2…

SSH のタイムアウトを防止する(Keep Alive を有効にする)

事象 例えば、EC2 の Amazon Linux に ssh で接続して実行時間の長い*1コマンドを実行しているとタイムアウトして以下のメッセージが出力される。 packet_write_wait: Connection to **.***106.21 port 22: Broken pipe 解決策 クライアント(自分の場合は M…

スワップ領域がないとどうなるか

Systems Performance: Enterprise and the Cloud (English Edition)作者: Brendan Gregg出版社/メーカー: Prentice Hall発売日: 2013/10/07メディア: Kindle版この商品を含むブログを見るP.280 It is also interesting to ask what happen if no swap device…

sched: Interrupt Aware Scheduler

Anybody tested Oracle's interrupt aware CPU scheduler (https://t.co/vNb9mQ9M55). In addition Linux 4.12 brings 2 I/O schedulers BFQ & Kyber.— Stefan Koehler (@OracleSK) 2017年5月15日Linux のプロセススケジューラで割込み負荷の高いCPU以外にプ…

真のCPU使用率 by Brendan Gregg@Netflix

自分の「シンプルでシステマチックな〇〇性能分析」のルーツな面々のうちの2人*1 Brendan Gregg@Netflix と Tanel Poder@Gluent が素敵な絡みをしていたのでメモ。@brendangregg Could be useful: I once documented my understanding of the typical CPU co…

top の起源は VMS の MONITOR PROCESS/TOPCPU コマンド

top コマンドは William LeFebvre が VMS の MONITOR PROCESS/TOPCPU コマンドにインスパイアされて1984年にBSD 用に作ったのが起源らしい。へーと思ったのでメモ。Systems Performance: Enterprise and the Cloud作者: Brendan Gregg出版社/メーカー: Prent…

パッケージインストール時に NOKEY という Warning が出る

署名を検証するための適切なキーをインストールしていない場合は、メッセージに NOKEY という単語が含まれます: warning: tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA1 signature: NOKEY, key ID 57bbccba https://access.redhat.com/documentation/ja-…

Linuxで hostname コマンドはどこから情報を取っているか

/proc/sys/kernel/hostname から取っている 参考 linux - Where does uname get its information from? - Unix & Linux Stack Exchange linux - Where does `hostname` store the hostname that I've set? - Unix & Linux Stack Exchange

UEK ダウンロードサイト

インターネットに接続されていないサーバで Yum でパッケージをインストール出来ない場合は Oracle Linux Yum Server | Oracle, Software. Hardware. Complete. からダウンロードできる。例えば、Oracle Linux 6 の UEK なら Oracle Linux 6 (x86_64) UEK Re…

プロセスがファイルに読み書きしてる内容を覗き見する

確認方法 ファイルディスクリプタ番号を確認して ls -l /proc/<PID>/fd tail で見てみる tail -f /proc/<PID>/fd/21 実行例 $ while :; do date; sleep 5; done > foo.log & [1] 23801 $ ps -elf|egrep [2]3801 1 S oracle 23801 22232 0 76 0 - 16525 wait 11:03 pts/</pid></pid>…

Oracle Linux 7 でサービス一覧を確認する

$ systemctl list-unit-files --no-pager UNIT FILE STATE proc-sys-fs-binfmt_misc.automount static dev-hugepages.mount static dev-mqueue.mount static proc-sys-fs-binfmt_misc.mount static sys-fs-fuse-connections.mount static sys-kernel-config.…

Oracle Linux 7 でデフォルト起動カーネルを変更する

Oracle Linux 7 でデフォルト起動カーネルを変更する手順 カーネルのエントリを確認 # grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2 Oracle Linux Server (3.10.0-327.el7.x86_64 with Linux) 7.2 ★RHCK Oracle Linux Server (3.8.13-98.7.1.el…

Oracle Linux 6 でブロックデバイスとWWIDの対応を調べる

⁠25.3.1. WWIDWorld Wide Identifier (WWID) を使用するとデバイスを正確に識別することが可能です。 WWID 識別子は、 SCSI 標準で全 SCSI デバイスに必要とされるような永続的でシステムに依存しない ID となります。 すべてのストレージデバイスに対して必…

ローカルYumリポジトリでパッケージインストール時の依存関係を自動解決する

RHEL、CentOS や Oracle Linux などの Red Hat Enterprise Linux 派生ディストリビューションで、インターネットに接続できない環境でパッケージをインストールしたいけど、rpm でインストールしようとすると依存関係の解決が面倒な場合は、ローカルYumリポ…

tar.gz を解凍せずにその中の特定ファイルの中身を検索する

sar、vmstat、iostat、top などが日別に一つの tar.gz にアーカイブ・圧縮されているファイルを解凍せずに、top の中身を検索するのに使ったコマンド。 find ./ -type f -name '*.tar.gz'|sort -n|while read LINE do tar tfz ${LINE}|egrep '^./top_'|xargs…

Oracle Database の Wait Time と CPU Time が1つの Flame Graph に

Oracle Database の Wait Time と CPU Time が1つの Flame Graph に、素晴らしい! I/Oシステムコール発行時に実はカーネルコードが ON CPU で時間を使っていたというようなケースも腕ひしぎ十字固めで一本。それくらいならAWRレポートだけでも Awr1page 的…

プロセス別の PTE は /proc/[pid]/status の VmPTE で確認できる

$ cat /proc/1741/status Name: bash State: S (sleeping) Tgid: 1741 Pid: 1741 PPid: 1740 TracerPid: 0 Uid: 1200 1200 1200 1200 Gid: 54321 54321 54321 54321 FDSize: 256 Groups: 54321 54322 54323 54324 54325 54326 54327 VmPeak: 108516 kB VmSiz…

zone_reclaim_mode=1 だと NUMA のリモートノードのゾーンからページが割当られない?

zone_reclaim_mode=1 だと、NUMA ノードのゾーンごとに wmark_{min|low|high} が計算され、各ゾーンで空きメモリが wmark_low を下回るとページ回収が始まると理解している。 zone_reclaim_mode=1 の場合、ページ回収が追いつかないとリモートノードのゾーン…

nfsiostat で NFS の I/O レイテンシや IOPS を調べる

NFS で iostat の await と svctm のような情報を取れるツールが欲しいと思っていたら nfsiostat という素敵なツールを見つけた。await にあたるのが avg exe (ms)、svctm にあたるのが avg RTT (ms) だと思う。 iostat の await と svctm の意味は Linux の…

strace の -y や -yy でFD番号と共にファイルパスやIPアドレス・ポート番号を表示する

strace を使う場合、プロセスが起動している間に lsof や /proc/[pid]/fd でファイルディスクリプタ(FD)番号とファイルパスの対応を確認しておかないと、read(17, ... などと出力されている場合に、17 のファイルパスがわからなくなりますが*1、 strace 4.…