今更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

The following two tabs change content below.

あだちん

1989年生まれ。 ランサーズ/SRE。 2013年新卒に自宅サーバを構築し、技術ブログを立ち上げたが、 2017年に電源が壊れConoHaにリプレイスした。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、 そして「脆弱性スキャナVuls」のOSS活動もしており、 広報/エバンジェリスト/VulsRepo init file,chatwork通知のコントリビュータでもある。 現在は分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中。 好きな構成管理ツールはAnsible,Terraform。 インフラならAWS/Docker。言語歴:Python,Golang。WEBサーバならH2O。

コメントを残す

This site uses Akismet to reduce spam. Learn how your comment data is processed.