Pocket

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

Pocket

カテゴリー: KernelLinux

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。個人開発では「夫婦、パートナー向け家事管理サービス/famii」をCakePHP/Laravelで開発中。副業では数社サーバー保守とベンチャー企業のインフラコンサルティングやMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、GCPでのGKE/Kubernetes保守などを担当している。

0件のコメント

コメントを残す

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