開発エンジニアブログvol.3 【topコマンドについて】
こんにちは!採用広報のあすぽんです!! 冒険社プラコレにはPLISMチームという開発エンジニア・デザイナーの専門事業部があります!
PLISMチームでは、まだ世の中にない新しいアイデアを生み出し実現させることをテーマに最先端の技術を取り入れた、No.1のユーザー体験を追求する最強のクリエイター集団を目指しています! エンジニアは自ら企画し、開発しています。プラコレでは主軸事業の「プラコレウェディング」だけでなく 「DRESSY」や「farny」などのオリジナルメディアの運営、ウェディングドレスのEC事業、バーチャルオフィス事業など「新しい価値を創造し続ける」という理念の元、様々な事業を行っているんです! そんなプラコレエンジニアメンバーが自ら学び、アウトプットしている開発エンジニアブログをwantedlyでもご紹介します!
今回はエンジニアideのブログをご紹介。
プラコレのサーバーエンジニア。 プラコレ全般のサービスのサーバーを担当。受注案件など、様々な経験を生かし、自社のサービスを支える、プラコレの大黒柱。
どんなサービスでもサーバーの負荷については悩ましい問題が多いかと思われます。 どのプロセスが重いか死んでるプロセスが無いかなどので状況を確認するのに便利なコマンドで「top」コマンドというのがありますので今回まとめさせていただきます。
topコマンドとは。
現在実行中のプロセスの負荷状況や実行時間などを確認できる便利なコマンドです。
実行結果はこちら
様々なプロセスが立ち動作していますね! 今回は共用サーバで実行したため凄い数のプロセス数になっております! では一番上の列から説明していきます。
load average(1列目)
システム全体の負荷状況を表す指標が確認できる。
load averageについては他にもuptime/wコマンドがあります
●uptime
システムの稼働時間を見るコマンド
●w
サーバーに誰がログインしているかと、何を実行しているかを確認できる。
Tasks(2列目)
各タスクの状態を数値で確認できる。
total : 合計のタスク数
running : 稼働中のタスク数
sleeping : 待機中のタスク数
stopped : 停止中のタスク数
zombie : ゾンビのタスク数
※ ゾンビプロセスとは、プロセスが既に終了しており実態は消滅しているのに、 プロセステーブルに残ってしまっている状態のことを指します。
CPU(3列目)
us : ユーザプロセスの実行された時間のパーセンテージ
sy : システムプロセスの使用時間のパーセンテージ
ni : nice等の実行優先度を変更したプロセス使用時間のパーセンテージ
id : アイドル状態のプロセス時間のパーセンテージ
wa : I/Oの終了待ちをしていたプロセス時間のパーセンテージ
hi : ハードウェアの割込み要求での使用時間のパーセンテージ
si : ソフトウェアの割込み要求での使用時間のパーセンテージ
st : OS仮想化利用時に他のCPUの実行時間のパーセンテージ
Memory(4列目)
物理メモリの使用状況の確認。
total : 物理メモリの総容量
free : 物理メモリの空き容量
used : 物理メモリの使用容量
buff/cache :バッファやキャッシュ(ファイルキャッシュ)として使用しているメモリ量 →他アプリでメモリが必要となった場合はこの領域が使われる ようはメモリ空いてるから使うけど、他で使うことになったら解放して使えるようにしますね! 的な解釈でいいかと思います。
Swap Memory(5列目)
スワップ領域の使用状況の確認。
total : スワップ領域の総容量
free : スワップ領域の空き容量
used : スワップ領域の使用容量
avail Mem : こちらはswap memoryの列に記載されていて紛らわしいのですが swapとは関係なくキャッシュなどを解放することで利用可能なメモリ量
プロセス
PID(Process ID): タスクの一意なプロセスID
USER : タスクの実効ユーザー名
PR(Priority): タスクの優先度で高い数値ほど優先される。rt(real time)となっている場合は 最優先で実行
NI(Nice value): タスクのnice値。負のnice 値は高い優先度を意味し、正のnic 値は低い優先度を意味する
VIRT(Virtual Image): タスクが使用している仮想メモリの総量。スワップも含む
RES(Resident Memory Size):スワップを含まない、物理メモリの消費量
SHR(Shared Mem size):タスクが利用している共有メモリの総量
S(Process Status): ・D:割り込み不可能なスリープ状態 ・R:実行中 ・S:スリープ状態 ・T:トレース中/停止された ・Z:ゾンビ
%CPU : 前回の更新(topのリロード前後の差分)からの、タスクの所要 CPU 時間の占有率。 総 CPU 時間のパーセンテージで表される
%MEM : タスクが現在使用している利用可能な物理メモリの占有率。
TIME+ : タスクが開始してから利用した CPU 時間の総計
COMMAND : タスクを開始するのに使ったコマンドライン、 またはタスクに関連づけられたプログラムの名前を表示
その他
●c(コマンドの詳細情報表示)
COMMANDの詳細を確認する場合は[c]を実行すると詳細な実行コマンドが表示されます。 バッチ処理なども省略して表示されていると何のバッチが動いているのかが 分からないのですが、詳細情報にすると実際実行されたコマンドが表示されるのでお勧めです。
●L(文字列を検索)
プロセス内にあるワード全てに対して文字列検索できます
●u(ユーザー名を検索)
プロセス内のUSERを検索できます
●k(プロセスを終了)
プロセスを終了させるコマンドにkillコマンドがありますが それをTOPコマンドで表示中に実行できます。
●Shift + p, Shift + m, Shift + r, <, >(ソート関連)
Shift + p(デフォルトの表示順はこちら) CPU使用率でソートする
Shift + m メモリ使用率でソートする
Shift + r 現在ソートしている項目の、昇順降順を切り替える
< 現在ソートしている左の列をソートする
> 現在ソートしている右の列をソートする
●1(コア数ごとの使用率)
%Cpu(s)は複数のコアを1つにまとめて表示されているので 1つ1つのCPUの状態を確認する場合に使用できます。
topコマンドはサーバー負荷で見るのに大事になるので 意味合いは覚えていきたいところですね!
ありがとうございました!
冒険社プラコレは情熱があり一緒に冒険してくれる、仲間を大募集しています!
サービスを一緒にこれから企画し、進化させてくれるエンジニア、デザイナーの皆さん、ぜひご応募ください!新卒・中途共に募集中!
https://www.wantedly.com/projects/594985
冒険社プラコレの仲間たちの日常を動画で紹介しています*
→https://vt.tiktok.com/ZSe4sPBbb/
ぜひチェックしてください♡
オフィス見学会も実施中!