今更htopを使って気づいたのですが…😒

htopH2Oのプロセスを見るとこんなにあったっけ???
実際にtopコマンド、psコマンドだと…

2個しかない。今回SREチームでこれなんなのと言及しまくったので、
LinuxのKernelの部分でもあるプロセスとスレッドの違いについてと、
htop,topコマンドについてブログします。


■Prosess and Threads

https://qiita.com/ftakao2007/items/d0fbecd3873054f603f5

・プロセス

CPU上で実行されるもので、タスクを完了するためにLinuxのカーネルが制御するあらゆるリソースを使うことが可能。
スレッドが無い時はプロセスが実行単位となります。

・スレッド

「1つのプロセスの中で複数の実行単位を持てるように機能拡張したもの」(SoftwareDesign2014年8月号)

1つのプロセスから生成される実行単位で同じプロセスから並行でスレッドを起動させることができます。
スレッドはメモリや、オープン中のファイルなどのリソースを共有することができて、同じアプリケーションデータにアクセスが可能です。
もちろんスレッドは同じタイミングで共有しているリソースに変更をかけるべきではないことも言えます。
なので、ロックをかけたりシリアルに動かしたりという制御などはアプリケーションとなります。

・2つの違いは?

プロセスはリソースを共有することができません。プロセスを起動させるにはリソースをコピーすることが必要になります。
その分性能の観点からはスレッドを起動するほうが効率的です。
一方、プロセスとスレッドはスケジューリングの観点からは同じような特徴を持っているのでカーネルからは同じように扱われます。


■ps command

psコマンドでスレッドを表示させたい場合はオプションで「H」をつければ出てきます。

 出てきやがったな!😆


■htop,top command

・htop

(訳)
ユーザスレッドを非表示:通常のプロセスとは異なる表現をするシステム(最近のNPTLベースのsys-

これにより、スレッドをプロセスリストのユーザー空間プロセスから隠すことができます。

manでみると確かにデフォルトでスレッドが出るようになってますな。
「H」押すと2個になってた。ちなみにhtopコマンドの使い方は下記。

・top

(訳)
:スレッドモード操作

スレッドモードトグルの状態に応じて、タスクまたはスレッドの総数を表示します。
プロセスがマルチスレッドでtopがスレッドモードで動作していない場合 、
`H ‘コマンドでスレッドモードを切り替えます。 

どうやらtopコマンドでも「H」でスレッドが表示されるみたいですな。

いるね!!!!!!!!!


■まとめ

そんなわけでhtopはデフォルトでスレッドが表示されるということです。
zsh,bashで色分けすると判断できやすいかと。
これからはhtopでサーバの状況を確認しましょう!

カーネルについてはこれを読むしかないっ!

https://goo.gl/C9VNeH

カテゴリー: KernelLinux

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中である。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください