COMPANY SERVICE STAFF BLOG NEWS CONTACT

STAFF BLOG

スタッフブログ

TECHNICAL

テクログ

2025.01.31

チーム内で「プロセスの存在を観察する」という座学を開催したときの内容

テクログ

なぜこの座学を行ったか

弊社ではキャリアの背景として業務による開発経験があるかの制限はありません(たしか)。

業務のアプリケーションを実装することは出来ても、プロセスの存在を認識する機会は無いのでは?と思い、今回の座学を行いました。

以下に続く文章はその座学の資料をブログ用に改変したものです。

この座学の狙い

プロセスの存在を知ることで↓↓ここらへんの効果がでることが狙いです

  • コンピュータがプログラムを実行するときの解像度が深まる
    • 深めた結果何か良いことが起きれば嬉しいです
  • 業務で扱うアプリのメモリ使用量やCPU使用率などの感覚を持つことで適切なマシンスペックがある程度分かること
  • PCが重いときのストレスを軽減できる(かも)

「プロセス」とは

プログラムが実際にメモリ上で稼働しているものを「プロセス」といいます。

どのサイトでも大体このような説明です。↓↓ こんな感じです。

「プロセス」とは、簡単に言えば、動作中のプログラムのことです。それに対して「プログラム」は、ファイルのような形態で存在しているデータのことも含む言葉です。

ふつうのLinuxプログラミング 第2版 https://www.sbcr.jp/product/4797386479/

一方,実行中のプログラムがプロセスである.

システムプログラム(第4回)https://www.coins.tsukuba.ac.jp/~syspro/2023/2023-06-14/index.html

プロセスとは、Macで実行しているプログラムのことです。プロセスには、アプリ、macOSが使用するシステムアプリ、または不可視のバックグラウンドプロセスがあります。

Apple https://support.apple.com/ja-jp/guide/activity-monitor/actmntr1001/mac

データの容量の単位

続く説明でデータ容量の単位が出てくるのでサクッと紹介します。

コンピュータで扱われるデータの容量の単位に{bit(ビット)、Byte(バイト)}があります。基本的にByte(バイト)が使われます。省略して「B」と書かれたりします。

M(メガ)、G(ギガ)、T(テラ)とかありますが、これらは単位じゃなくて、接頭辞/接頭語 です。大きい桁数をそのまま書かずに1文字で表現するのに使われます。

「プロセス」が使うメモリ使用量を見るときに例えば 100MB 使っているとかが分かります。

「プロセス」の例

Google Chrome や VScode, Excel など、PC上で実行ファイルを実行すると「プロセス」になります。

「プロセス」を観察する

Windows のタスクマネージャーを起動すると「プロセス」を観察することが出来ます。「プロセス」ごとのCPU使用率やメモリ使用量などが観察できます。図1はタスクマネージャーの様子です。バックグラウンド プロセスの項目は会社固有のものもあるので隠しています。

図1はタスクマネージャーの様子

Google meet 使ってる時の「プロセス」を観察する

画面共有+顔出し のときのChromeのプロセスの様子を図2に示します。

GPUが比較的多く使っているのがポイントです。

「動画の処理にちゃんと GPU が使われているんだなー」みたいな感覚を持てます。

図2 画面共有+顔出し のときのChromeのプロセスの様子

逆に動画に関係無さそうなプロセスが GPU を多く使っていたら気になります。

PHPのプログラムを実行して観察します (その1)

メモリ使用量を観察します。

PHPのプログラムの概要

  1. UTF-8の10万文字の日本語を変数に代入する
  2. 10秒間処理を停止する
  3. おわり

変数に代入することでメモリ使用量が変わることを確認します。10秒間処理を停止することでタスクマネージャー上でプロセスがすぐに終わるのを回避します。

PHPのプログラムの詳細

<?php

/**
 * UTF-8 という文字コードでは日本語は1文字3バイト~8バイトらしいです
 * https://itpfdoc.hitachi.co.jp/manuals/3000/30003D0820/GD080450.HTM
 *
 * 3 Byte * 10 文字 = 30 Byte
 *
 * これを 100,000 回生成します。なので、3MB のメモリを使用するはずです。
 *
 * 30 Byte * 100,000 = 3,000,000 Byte = 3MB
 */
$message = str_repeat('あいうえおかきくけこ', 100000);

/**
 * 事前に試したところ sleep(10) を実行するとメモリを 3.6MB 使用していました。
 */
sleep(10);

/**
 * 想定では、$message と sleep(10) によって、メモリを 6.6MB 使用します。
 */

PHPプログラム実行中のプロセスの様子

先程のプログラムの実行中のタスクマネージャーの様子を図3に示します。

図3メモリ使用量を観察するためのPHPプログラムを実行中の様子

予想では 6.6MB 使用すると思っていましたが、実際には 6.5MB 使用していました。大体あってました。

文字数を1桁増やすと、変数 $message は 30MB ぐらいを確保するはずです。sleep 関数と合わせて、33.6MB ほど使われる予想です。このプログラムの実行中のタスクマネージャーの様子を図4に示します。

図4 図3よりも多くメモリを使用するPHPプログラムを実行中の様子

実際には 31.7MB でした。予想と違いますが、大体同じなので許容します。

PHPのプログラムを実行して観察します (その2)

PHPのプログラムの概要

指定した値までの素数を求めます

PHPのプログラムの詳細

プログラムは ChatGPT さんに協力してもらい、指定範囲までの素数を求めるプログラムを作ってもらいました。(「PHP で CPU をたくさん使用する簡単なスクリプトを教えて下さい」と聞きました。)

先程のメモリ消費するプログラムとの違いは以下の部分です。

  • 変数への代入するサイズが少ない
  • 計算回数が多い(余りを求める計算をたくさん行っています)

ChatGPTが出力したプログラムコードは割愛します。

PHPプログラム実行中のプロセスの様子

CPUを多く使用するプログラムを実行中のタスクマネージャーの様子を図5に示します。

図5 CPUを多く使用するPHPプログラムを実行中の様子

ディスクを使うPHPプログラムはうまく作れなかったです

ファイルをたくさん作成するプログラムを実行したらウイルス対策ソフトのCPU使用率がグンと上がったのでやめました。もしかすると会社のサポートチームに通知行っているかもしれないです。

おわり

おわりです。今回の座学で PC がやたら重いときにタスクマネージャーを確認して解決の糸口になっていれば幸いです。

たとえば、私は以前に業務とは関係ない、何か PC メーカーの公式っぽいプロセスがメモリを多く使用していました。その時の様子を図6に示します。

図6 PCメーカーっぽいプロセスがメモリを多く使用していたときの様子

会社のサポートチームに問い合わせてプロセスを終了させることで解決できました。

この記事を書いた人

インドア

入社年2017年

出身地埼玉県

業務内容開発

特技・趣味映画・アニメ鑑賞、ゲーム、散歩、勉強

テクログに関する記事一覧

TOP