sar-analyzer の開発状況(20181021)
sar-analyzer ですが、v10.19.0 を出しました。
グラフの vertical notch を修正しました。
いままで、パーセント表示でない項目で、グラフが四角から飛び出たりしてみっともなかったですので、これぐらいのオーダーでいいかな、というところにしました。
また、ldavg についてもグラフを追加しています。
さあ、スシでも食いに行くかな。
sar-analyzer の開発状況(20181019)
sar-analyzer ですが、v10.18.1 を出しました。
このバージョンでは、グラフを表示する postscript ファイルを圧縮せずにそのままディレクトリに作成することにしました。なんだか、最近、Ghostscript の pdfwrite のバグもあるようなので。
グラフは、CPU all 、 paging 、memory を確認できます。なお、刻みは絶対にしているので、異常な数値があると、飛び出たりして楽しいです。
解析結果の .txt ファイルは、今までどおり出力されます。これを、じっくり眺めていくと、マシンの息遣いが聞こえてくると思いますよ。
標準的なコマンドは、以下のとおりですよ。
$ sar-analyzer -D sar_data -ZM
QEMU で raspberry pi をエミュレート(その1)
raspberry pi でサイネージをやってみましたが、もっと機能を追加したいとか、raspberry pi で確認するのが面倒なのでホストマシンで確認したいとか、希望があります。
QEMU でなんとかできないものでしょうか。
qemu をインストールします。
# dnf install qemu
サポートされているマシンタイプを確認します。
$ qemu-system-arm -machine '?'
以下の結果が表示されました。
Supported machines are:
akita Sharp SL-C1000 (Akita) PDA (PXA270)
ast2500-evb Aspeed AST2500 EVB (ARM1176)
borzoi Sharp SL-C3100 (Borzoi) PDA (PXA270)
canon-a1100 Canon PowerShot A1100 IS
cheetah Palm Tungsten|E aka. Cheetah PDA (OMAP310)
collie Sharp SL-5500 (Collie) PDA (SA-1110)
connex Gumstix Connex (PXA255)
cubieboard cubietech cubieboard
emcraft-sf2 SmartFusion2 SOM kit from Emcraft (M2S010)
highbank Calxeda Highbank (ECX-1000)
imx25-pdk ARM i.MX25 PDK board (ARM926)
integratorcp ARM Integrator/CP (ARM926EJ-S)
kzm ARM KZM Emulation Baseboard (ARM1136)
lm3s6965evb Stellaris LM3S6965EVB
lm3s811evb Stellaris LM3S811EVB
mainstone Mainstone II (PXA27x)
midway Calxeda Midway (ECX-2000)
mps2-an385 ARM MPS2 with AN385 FPGA image for Cortex-M3
mps2-an511 ARM MPS2 with AN511 DesignStart FPGA image for Cortex-M3
musicpal Marvell 88w8618 / MusicPal (ARM926EJ-S)
n800 Nokia N800 tablet aka. RX-34 (OMAP2420)
n810 Nokia N810 tablet aka. RX-44 (OMAP2420)
netduino2 Netduino 2 Machine
none empty machine
nuri Samsung NURI board (Exynos4210)
palmetto-bmc OpenPOWER Palmetto BMC (ARM926EJ-S)
raspi2 Raspberry Pi 2
realview-eb ARM RealView Emulation Baseboard (ARM926EJ-S)
realview-eb-mpcore ARM RealView Emulation Baseboard (ARM11MPCore)
realview-pb-a8 ARM RealView Platform Baseboard for Cortex-A8
realview-pbx-a9 ARM RealView Platform Baseboard Explore for Cortex-A9
romulus-bmc OpenPOWER Romulus BMC (ARM1176)
sabrelite Freescale i.MX6 Quad SABRE Lite Board (Cortex A9)
smdkc210 Samsung SMDKC210 board (Exynos4210)
spitz Sharp SL-C3000 (Spitz) PDA (PXA270)
sx1 Siemens SX1 (OMAP310) V2
sx1-v1 Siemens SX1 (OMAP310) V1
terrier Sharp SL-C3200 (Terrier) PDA (PXA270)
tosa Sharp SL-6000 (Tosa) PDA (PXA255)
verdex Gumstix Verdex (PXA270)
versatileab ARM Versatile/AB (ARM926EJ-S)
versatilepb ARM Versatile/PB (ARM926EJ-S)
vexpress-a15 ARM Versatile Express for Cortex-A15
vexpress-a9 ARM Versatile Express for Cortex-A9
virt-2.10 QEMU 2.10 ARM Virtual Machine
virt QEMU 2.11 ARM Virtual Machine (alias of virt-2.11)
virt-2.11 QEMU 2.11 ARM Virtual Machine
virt-2.6 QEMU 2.6 ARM Virtual Machine
virt-2.7 QEMU 2.7 ARM Virtual Machine
virt-2.8 QEMU 2.8 ARM Virtual Machine
virt-2.9 QEMU 2.9 ARM Virtual Machine
xilinx-zynq-a9 Xilinx Zynq Platform Baseboard for Cortex-A9
z2 Zipit Z2 (PXA27x)
raspberry pi で使用する sdcard.img を編集する方法
raspberry pi で使用する sdcard.img の中をいじりたいときがあります。その方法を紹介します。
1. 手動で頑張る方法
普通に、fdisk などで内容を確認します。以下は一例です。
$ fdisk -lu sdcard.img
ディスク sdcard.img: 532 MiB, 557842944 バイト, 1089537 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: dos
ディスク識別子: 0x00000000デバイス 起動 開始位置 終了位置 セクタ サイズ Id タイプ
sdcard.img1 * 1 65536 65536 32M c W95 FAT32 (LBA)
sdcard.img2 65537 1089536 1024000 500M 83 Linux
cfdisk だと、一見してファイルタイプも表示されるので、一見してわかりやすいでしょう(略)。
スタートセクターを指定してマウントする必要があります。まず、file コマンドで sdcard.img を確認します。
$ file sdcard.img
sdcard.img: DOS/MBR boot sector; partition 1 : ID=0xc, active, start-CHS (0x0,0,2), end-CHS (0x4,20,17), startsector 1, 65536 sectors; partition 2 : ID=0x83, start-CHS (0x4,20,18), end-CHS (0x43,209,15), startsector 65537, 1024000 sectors
二つのパーティションがありますので、これらをそれぞれ作成したマウントポイントにマウントすれば OK です。こつは、startsector に 512 をかけることです。
上記の表示結果を使用した一例です。
partition 1 を /mnt/sdcard1 にマウントする例です。
# mount -t vfat -o loop,offset=512 sdcard.img /mnt/sdcard1
編集後は、umount してください。
# umount /mnt/sdcard1
parttion 2 を /mnt/sdcard2 にマウントする例です。
# mount -t ext4 -o loop,offset=33554944 sdcard.img /mnt/sdcard2
2. kpartx を利用する方法
sdcard.img を /dev/mapper にマップさせます。
# kpartx -av sdcard.img
add map loop0p1 (253:3): 0 65536 linear 7:0 1
add map loop0p2 (253:4): 0 1024000 linear 7:0 65537
/dev/mapper を確認します。
# ll /dev/mapper
合計 0
crw-------. 1 root root 10, 236 10月 9 18:49 control
lrwxrwxrwx. 1 root root 7 10月 9 18:49 fedora-home -> ../dm-2
lrwxrwxrwx. 1 root root 7 10月 9 18:49 fedora-root -> ../dm-0
lrwxrwxrwx. 1 root root 7 10月 9 18:49 fedora-swap -> ../dm-1
lrwxrwxrwx. 1 root root 7 10月 10 07:43 loop0p1 -> ../dm-3
lrwxrwxrwx. 1 root root 7 10月 10 07:43 loop0p2 -> ../dm-4
細部を確認します。
# dmsetup info
Name: loop0p2
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 0
Event number: 0
Major, minor: 253, 4
Number of targets: 1
UUID: part2-devnode_7:0_Wh5pYvMName: loop0p1
State: ACTIVE
Read Ahead: 256
Tables present: LIVE
Open count: 0
Event number: 0
Major, minor: 253, 3
Number of targets: 1
UUID: part1-devnode_7:0_Wh5pYvM
/dev/mapper/loop0p1 をマウントしてみます。
# mount /dev/mapper/loop0p1 /mnt/sdcard1
# ls /mnt/sdcard1
bcm2709-rpi-2-b.dtb bootcode.bin cmdline.txt config.txt fixup.dat start.elf zImage
(参考)
sar-analyzer の開発状況(20180930)
sar-analyzer ですが、v10.16.5 を出しました。
このバージョンでは、-Z オプションを使用した時に、それまでの postscript ファイルではなく、pdf ファイルを生成し、tar ball としてディレクトリに保存します。
sar-analyzer で segfault したので、coredump を読んでみた ( is sar-analyzer の開発状況(20180927))
sar-analyzer である sa ディレクトリを読んでいたら、segfault したので、coredump を読もうと思い、2カ月前の自分のブログ記事を参照していたら、coredump が剥かれているはずのディレクトリに coredump を吐いていなくて、なんでやねん、と調べていたら、/var/lib/systemd/coredump に吐いていました。
今は、coredumpctl というコマンドもあるみたいで、うわー、変わったなー、と思いました。
/var/lib/systemd/coredump には、以下のような圧縮ファイルがありました。
# ls -lat | head
合計 272220
drwxr-xr-x. 2 root root 24576 9月 26 23:01 .
-rw-r-----+ 1 root root 107818 9月 26 23:01 core.sar-analyzer.1000.067038917e7c41db8dd0d70eecf6c43f.7835.1537970460000000.lz4
-rw-r-----+ 1 root root 107329 9月 26 22:52 core.sar-analyzer.1000.067038917e7c41db8dd0d70eecf6c43f.7454.1537969945000000.lz4
-rw-r-----+ 1 root root 107142 9月 26 22:49 core.sar-analyzer.1000.067038917e7c41db8dd0d70eecf6c43f.7287.1537969759000000.lz4
これを読むには、まず、sar-analyzer をデバッグオプション付きで以下のようにビルドしなおします。
# gcc -o sar-analyzer -debug -g main.c common_jp.c line_data.c make_report.c sar_analyzer_jp.c setter_getter.c
segfault を起こす環境でこのバイナリを実行して、segfault を起こさせてみます。
$ ./sar-analyzer-debug -D sar_data -ZM
coredump が出ているディレクトリに移動します。
/var/lib/systemd/coredump
圧縮ファイルを解凍します。
# lz4 -d <lz4ファイル名>
# gdb ./sar-analyzer core.sar-analyzer.1000.067038917e7c41db8dd0d70eecf6c43f.7835.1537970460000000.lz4
(gdb)bt
ここだよ、と教えてくれました。
あとは、ソースコードにデバッグ文字なんかを入れていって、printf とかしていきます。
loop のコードをいい加減に書いていて、ファイル名に空文字が入っていないというバグを見つけました(書いたのは私です)。空文字のファイルをオープンしようとして、segfault になっていました。まず、segfault しなくするには、strlen で文字列を計って、0 以下だったら、エラーとして exit させます。
もちろん、loop のところも適切に直しました。まあ、手を抜いていると、こうなるという見本のようなものですね。
秋だなぁ。。
SELinux を頑張る-その7
おつかれさまです。
さて、myuser の SELinux ユーザーを staff_u にしましたよね。
$ id -Z
(表示)
staff_u:staff_r:staff_t:s0
然し乍ら、myuser のホームディレクトリのセキュリティコンテキストを確認すると、以下のようになっています。
$ ls -lZ
(表示)
unconfined_u:object_r:user_home_t:s0
これはよくないと思うので、ラベルを貼り直したいところです。
ラベルを貼り直すのは、restorecon コマンドでおこないますが、既に一般ユーザーは、SELinux ユーザー staff_u にマッピングされており su コマンドが使えなくしてあるので、まだ unconfined_u にマッピングされている root になる必要があります。
# restorecon -Rv /home/myuser
うーん、staff_u にならないようです。
では、/.autorelabel ファイルを作成してから再起動したらどうでしょうか。
注意事項を学んだのですが、この時は、permissive にする必要があります。
うーん、やってみましたが、だめでした。
以下のコマンドで、できました。
# chcon staff_u:object_r:user_home_t:s0 -R /home/myuser
ところで、もう一度やってみたら、permissive にしたら、restorecon でもいけました。
ということは、unconfined モジュールを削除したシステムでは、一般的に restorecon も permissive にせんといかんということなのかな。
SELinux を頑張る-その6
おつかれさまです。
前回、unconfined ポリシを、以下のように削除してみましたよね。
# semodule -d unconfined
ここで、システムのリラベルを実行すると、システム再起動を繰り返す、という問題を発見しました。
# touch /.autorelabel
# shutdown -r now
SELinux のメーリングリストでアドバイスを求めると、ポリシの話かもしれないし、そうでないかもしれない、一度 permissive にしてからやってみろ、というお話でした。
私は、質問する際に、/.autorelabel ファイルが削除されていないことを見つけていました。
実際に、permissive にし直すと、できました。
permissive のままではよくないので、もう一度 enabled に戻して再起動する必要があります。
もし、実際のシステムで再起動を繰り返す羽目になると大変です。その場合は、レスキューモードにして permissive にしましょう。
SELinux を頑張る-その5
ちょっと前回は、やりすぎた感があります。
デフォルトの SELinux ユーザーを unconfined_u にする前(ユーザーをロックダウンする前)まで戻りました。
では、root ユーザの SELinux ログイン設定を、unconfined_u に戻しましょう。
# semanage login -m -s unconfined_u root
# semanage login -l
(表示)
ログイン名 SELinux ユーザー MLS/MCS 範囲 サービス名
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0 *
root ユーザーを unconfined_u のままにしつつ、次のことを実行します。
ユーザーを作成した時に、staff_u をデフォルトにしましょう。
# semanage login -m -s staff_u __default__
確認します。
# semanage login -l
(表示)
ログイン名 SELinux ユーザー MLS/MCS 範囲 サービス名
__default__ staff_u s0 *
root unconfined_u s0 *
システム再起動
これで、myuser から su コマンドを発行しても、staff_u SELinux ユーザーは su が許可されていない
ので、root にはなれません。
root になれるのは、root ユーザーが root でログインした時だけです。
つづく。
SELinux を頑張る-その4
では、次に、ユーザーを作成した時に、staff_u をデフォルトにしましょう。
# semanage login -m -s staff_u __default__
設定を確認します。
# semanage login -l
(表示)
ログイン名 SELinux ユーザー MLS/MCS 範囲 サービス名
__default__ staff_u s0 *
root staff_u s0 *
次に、staff_u に、staff_r, system_r, sysadm_r の SELinux ロールを割当てます。
要すれば、SELinux ロールの unconfined_r を抜きます。
現在の設定を確認します。
# semanage user -l
(表示)
ラベリング MLS/ MLS/
SELinux ユーザー プレフィックス MCS レベル MCS 範囲 SELinux ロール
guest_u user s0 s0 guest_r
root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r
staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r
sysadm_u user s0 s0-s0:c0.c1023 sysadm_r
system_u user s0 s0-s0:c0.c1023 system_r unconfined_r
unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r
user_u user s0 s0 user_r
xguest_u user s0 s0 xguest_r
設定します。
# semanage user -m -R "staff_r system_r sysadm_r" staff_u
(表示)
ラベリング MLS/ MLS/
SELinux ユーザー プレフィックス MCS レベル MCS 範囲 SELinux ロール
guest_u user s0 s0 guest_r
root user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r unconfined_r
staff_u user s0 s0-s0:c0.c1023 staff_r sysadm_r system_r
sysadm_u user s0 s0-s0:c0.c1023 sysadm_r
system_u user s0 s0-s0:c0.c1023 system_r unconfined_r
unconfined_u user s0 s0-s0:c0.c1023 system_r unconfined_r
user_u user s0 s0 user_r
xguest_u user s0 s0 xguest_r
マシン再起動
myuser ユーザーのセキュリティコンテキストを確認します。
$ id
uid=1000(myuser) gid=1000(myuser) groups=1000(myuser) context=staff_u:staff_r:staff_t:s0
su コマンドを発行して、正しいパスワードを入力しても、以下のようになり、root になれません。
$ su
パスワード :
su: 認証失敗
というのも、staff_u は、su コマンドが禁止されているためです。
ということは、root になれなくなってしまったということなのだ。。
単純に、unconfined_u を抜いてしまうと、root になれなくなってしまいます。
このような場合を考慮して、sudo を有効に使う必要がありました。
つづく。
SELinux を頑張る-その3
次は、ユーザーについてロックダウンしていくことを検討しましょう。
ユーザーについての現在の設定を確認する。
# semanage login -l
================
ログイン名 SELinux ユーザー MLS/MCS 範囲 サービス名
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
================
root は、unconfined_u にマッピングされ、デフォルトユーザーも同様となります。
では、strict policy に近づけていく作業を始めましょう。
root が、unconfined_u という SELinux ユーザーにマッピングされています。
これを、staff_u という SELinux ユーザーにマッピングしなおします。
# semanage login -m -s staff_u root
設定を確認します。
# semanage login -l
================
ログイン名 SELinux ユーザー MLS/MCS 範囲 サービス名
__default__ unconfined_u s0-s0:c0.c1023 *
root staff_u s0-s0:c0.c1023 *
================
root が staff_u にマッピングされました。
ここで、/root のデータを ssh 経由でダウンロードしようとすると、多数のエラーが audit log に出力されました。
ちょっと解決策がすぐには分からないので、一般ユーザでデータのやり取りをするようにしましょう。
一般ユーザでの ssh には、何の問題もありませんでした。
お疲れさまです。
SELinux を頑張る-その2
では、strict ポリシに近づけていきます。
ところで、<user> ユーザーが、wheel グループに入ったままなので、抜きます。
以下のコマンドにより可能です。
# gpasswd -d <user> group
では、実行します。
# gpasswd -d <user> wheel
まずは、unconfined モジュールを削除します。
uncnofined モジュール削除の前に、unconfined_domain_type が幾つあるか確認して
おきます。
# seinfo -a unconfined_domain_type -x | wc -l
88
では、削除します。
# semodule -d unconfined
もう一度確認します。
# seinfo -a unconfined_domain_type -x | wc -l
18
かなり減っています。
何が削除されたのかを確認します。
$ diff -ruNp seinfo_-a_unconfined_domain_type_-x seinfo_-a_unconfined_domain_type_-x__after_semodule_-d_unconfined
--- seinfo_-a_unconfined_domain_type_-x 2018-09-24 12:16:34.268464049 +0900
+++ seinfo_-a_unconfined_domain_type_-x__after_semodule_-d_unconfined 2018-09-24 12:16:34.269464030 +0900
@@ -1,88 +1,18 @@
Type Attributes: 1
attribute unconfined_domain_type;
- abrt_handle_event_t
anaconda_t
authconfig_t
- bacula_unconfined_script_t
- boinc_project_t
- bootloader_t
- certmonger_unconfined_t
- cinder_api_t
- cinder_backup_t
- cinder_scheduler_t
- cinder_volume_t
- cloud_init_t
- cluster_t
- clvmd_t
- condor_startd_t
- conman_unconfined_script_t
- crond_t
- depmod_t
- devicekit_disk_t
- devicekit_power_t
- devicekit_t
- dirsrvadmin_unconfined_script_t
firstboot_t
- fsadm_t
- fwupd_t
- httpd_unconfined_script_t
- inetd_child_t
- inetd_t
- initrc_t
- insmod_t
install_t
- kdumpctl_t
- keepalived_unconfined_script_t
kernel_t
livecd_t
- lvm_t
- mount_t
- nagios_eventhandler_plugin_t
- nagios_unconfined_plugin_t
openshift_initrc_t
- openvpn_unconfined_script_t
- openwsman_t
- pegasus_openlmi_logicalfile_t
- pegasus_openlmi_unconfined_t
- pki_tomcat_script_t
- prelink_t
preupgrade_t
puppetagent_t
realmd_consolehelper_t
- realmd_t
rolekit_t
rpm_script_t
rpm_t
- rtas_errd_t
- samba_unconfined_net_t
- samba_unconfined_script_t
- semanage_t
- setfiles_mac_t
- sge_job_t
- sge_shepherd_t
- sosreport_t
- system_cronjob_t
- systemd_coredump_t
- tomcat_t
- tuned_t
- udev_t
- unconfined_cronjob_t
unconfined_dbusd_t
- unconfined_mount_t
- unconfined_munin_plugin_t
- unconfined_sendmail_t
- unconfined_service_t
unconfined_t
- virt_qemu_ga_unconfined_t
- virtd_lxc_t
- virtd_t
- vmtools_helper_t
- vmtools_t
- vmtools_unconfined_t
- vmware_host_t
- watchdog_unconfined_t
- wine_t
- xdm_unconfined_t
- xserver_t
- zabbix_script_t
お疲れさまです。
SELinux を頑張る-その1
Fedora28 で initrc_t からドメイン遷移するドメインがどれくらいのあるかを調べます。
# sesearch -T -s initrc_t | wc -l
3125
カウントするのをやめると、以下のように出力されます。
# sesearch -T -s initrc_t
type_transition initrc_t NetworkManager_exec_t:process NetworkManager_t;
type_transition initrc_t NetworkManager_initrc_exec_t:process initrc_t;
type_transition initrc_t NetworkManager_var_run_t:file net_conf_t "resolv.conf";
type_transition initrc_t NetworkManager_var_run_t:file net_conf_t "resolv.conf.tmp";
type_transition initrc_t abrt_dump_oops_exec_t:process abrt_dump_oops_t;
type_transition initrc_t abrt_exec_t:process abrt_t;
type_transition initrc_t abrt_helper_exec_t:process abrt_helper_t;
type_transition initrc_t abrt_initrc_exec_t:process initrc_t;
type_transition initrc_t abrt_upload_watch_exec_t:process abrt_upload_watch_t;
type_transition initrc_t abrt_watch_log_exec_t:process abrt_watch_log_t;
type_transition initrc_t accountsd_exec_t:process accountsd_t;
type_transition initrc_t acct_exec_t:process acct_t;
type_transition initrc_t acct_initrc_exec_t:process initrc_t;
type_transition initrc_t admin_home_t:dir auth_home_t ".yubico";
type_transition initrc_t admin_home_t:dir cache_home_t ".cache";
type_transition initrc_t admin_home_t:dir config_home_t ".config";
type_transition initrc_t admin_home_t:dir config_home_t ".kde";
...(snip)...
type_transition initrc_t xserver_exec_t:process xserver_t;
type_transition initrc_t ypbind_exec_t:process ypbind_t;
type_transition initrc_t ypbind_initrc_exec_t:process initrc_t;
type_transition initrc_t yppasswdd_exec_t:process yppasswdd_t;
type_transition initrc_t ypserv_exec_t:process ypserv_t;
type_transition initrc_t ypxfr_exec_t:process ypxfr_t;
type_transition initrc_t zabbix_agent_exec_t:process zabbix_agent_t;
type_transition initrc_t zabbix_agent_initrc_exec_t:process initrc_t;
type_transition initrc_t zabbix_exec_t:process zabbix_t;
type_transition initrc_t zabbix_initrc_exec_t:process initrc_t;
type_transition initrc_t zarafa_deliver_exec_t:process zarafa_deliver_t;
type_transition initrc_t zarafa_gateway_exec_t:process zarafa_gateway_t;
type_transition initrc_t zarafa_ical_exec_t:process zarafa_ical_t;
type_transition initrc_t zarafa_indexer_exec_t:process zarafa_indexer_t;
type_transition initrc_t zarafa_monitor_exec_t:process zarafa_monitor_t;
type_transition initrc_t zarafa_server_exec_t:process zarafa_server_t;
type_transition initrc_t zarafa_spooler_exec_t:process zarafa_spooler_t;
type_transition initrc_t zebra_exec_t:process zebra_t;
type_transition initrc_t zebra_initrc_exec_t:process initrc_t;
type_transition initrc_t zoneminder_exec_t:process zoneminder_t;
type_transition initrc_t zoneminder_initrc_exec_t:process initrc_t;
type_transition initrc_t zos_remote_exec_t:process zos_remote_t;
結構ありますね。私のマシンですので、結構インストールされているパッケージがあるので、ドメインの数も多いかもしれませんが。
sesearch コマンドは、setools-console パッケージに入っていますよ。
sar-analyzer の開発状況(20180918)
sar-analyzer のグラフ機能ができました。
CPU all と、paging を一つのファイルに、sar ファイル毎に作成します。
文字で確認する場合は、.txt ファイルを、グラフで確認する場合は、.ps ファイル達を
見ていくと、マシンの息づかいが聞こえてくると思います。