ablog

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

Linux

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.…

よく使う strace のオプション

Linux で strace を使ってシステムコールのトレースを調べる時によく使うオプションをメモ。 特にお気に入りのオプションは -T、-c、-ff & -o です。 書式 システムコールを詳細に追う tt: 行頭にタイムスタンプを出力(マイクロ秒) T: 行末にシステムコール…