f-wada
2021年9月3日 17時05分
お世話になります。
Armadillo-440を用いてシステムを構築しているのですが、
2週間程度の連続稼働を行うと、使用メモリが増加していることを確認したため
top コマンドにて実行中のプロセスを確認することにしました。
結果、見覚えのない 『net.agent』というプロセスが動作していることが分かりました。
このプロセスは時間経過に応じてメモリ使用量やプロセス数が増加するようです。
電源起動時はプロセスが2つですが、連続稼働すると以下のように4つに増えています。
(./userapp はこちらで作成したソフト)
[root@armadillo420-0 (ttymxc1) ~]# top Mem: 92112K used, 31076K free, 0K shrd, 4294967295K buff, 5K cached CPU: 38.5% usr 55.9% sys 0.0% nic 5.5% idle 0.0% io 0.0% irq 0.0% sirq Load average: 3.70 3.72 3.72 3/53 11961 PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND 1509 1 root S 29340 23.7 0 35.7 ./userapp 11873 10976 root R 3296 2.6 0 1.3 top 11860 2 root SW 0 0.0 0 0.7 [kworker/0:2] 1217 1 root S 16348 13.2 0 0.3 {net.agent} /bin/sh -e /lib/udev/net.agent 7 2 root SW 0 0.0 0 0.3 [rcu_preempt] 10953 1445 root S 3376 2.7 0 0.2 telnetd -l /bin/login 1288 1 root S 16476 13.3 0 0.0 {net.agent} /bin/sh -e /lib/udev/net.agent 11958 1288 root R 16476 13.3 0 0.0 {net.agent} /bin/sh -e /lib/udev/net.agent 11960 1217 root R 16348 13.2 0 0.0 {net.agent} /bin/sh -e /lib/udev/net.agent 1462 1 www-data S 4816 3.8 0 0.0 lighttpd -f /etc/lighttpd.conf 1445 1 root S 3368 2.7 0 0.0 inetd 10976 10955 root S 3296 2.6 0 0.0 ash 10955 10953 guest S 3296 2.6 0 0.0 -ash ...(略)
どうやら、この『net.agent』は
Linux 3.14, kernel: V2.08,userland: v2.04 の構成で自動で起動するようになっているようです。
このプロセスがどういったものなのか教えていただけますでしょうか。
自動起動の設定は /lib/udev/rules.d/80-networking.rules に記載されているようです。
以上、よろしくお願いします。
コメント
f-wada
古賀様
返信ありがとうございます。
>一点確認ですが、Armadillo-440 でお使いの Linux 3.14 対応のユーザーランドは、Atmark Dist と Debian GNU/Linux 7 のどちらでしょうか?
atmark-dist v1.55.1 になります。
net.agentに関する情報、ありがとうございます。
実行ファイルだと思いこんでいましたが、シェルスクリプトだったのですね。
/etc/network/interfaces を確認しましたが、
こちらで変更しており、 lo に対する設定が消えていました。
今回のメモリ増加についてはこの内容が影響している可能性が高そうです。
interfaces ファイルを編集して、連続稼働させて状況を確認したいと思います。
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) auto eth0 iface eth0 inet static address 192.168.10.90 netmask 255.255.0.0 gateway 0.0.0.0
追加で質問なのですが、
今回は net.agent の仕様上、loの記載が必須のようですが
こういった状況でなくても、loに関する設定は必ず行うべきなのでしょうか。
また、紹介いただいたwebページによると
/etc/init.d/udev を実行した際に eth0 が起動するようになっているため
/etc/network/interfaces にて "auto eth0" の記載は削除するべきでしょうか。
at_shinya.koga
f-wadaさん:
>返信ありがとうございます。
>
>>一点確認ですが、Armadillo-440 でお使いの Linux 3.14 対応のユーザーランドは、Atmark Dist と Debian GNU/Linux 7 のどちらでしょうか?
>
>atmark-dist v1.55.1 になります。
了解しました。AtmarkDist をお使いなのですね。
>net.agentに関する情報、ありがとうございます。
>実行ファイルだと思いこんでいましたが、シェルスクリプトだったのですね。
>
>/etc/network/interfaces を確認しましたが、
>こちらで変更しており、 lo に対する設定が消えていました。
>今回のメモリ増加についてはこの内容が影響している可能性が高そうです。
>interfaces ファイルを編集して、連続稼働させて状況を確認したいと思います。
これについても、了解しました。
>追加で質問なのですが、
>今回は net.agent の仕様上、loの記載が必須のようですが
>こういった状況でなくても、loに関する設定は必ず行うべきなのでしょうか。
lo を使う必要が生じた時点で ifup すればよいので、必須ではないんじゃないかと思います。
>また、紹介いただいたwebページによると
>/etc/init.d/udev を実行した際に eth0 が起動するようになっているため
>/etc/network/interfaces にて "auto eth0" の記載は削除するべきでしょうか。
eth0、つまり LAN インタフェースを動作させない構成で稼働させていらっしゃるのであれば、eth0 を auto 指定する必要は、ないんじゃないかと思います。
以上、断言する回答ではなく恐縮ですが、現状できるコメントです。
f-wada
at_shinya.koga
2021年9月4日 8時30分
アットマークテクノの古賀です。
net.agent については、以前に 800EVA に関して話題に出たことがありました:
https://armadillo.atmark-techno.com/forum/armadillo/2793
# 上のスレッドの、最後から二番めの質問と、最後のコメントです。
一点確認ですが、Armadillo-440 でお使いの Linux 3.14 対応のユーザーランドは、Atmark Dist と Debian GNU/Linux 7 のどちらでしょうか?
https://armadillo.atmark-techno.com/resources/software/armadillo-440/us…
f-wadaさん:
>Armadillo-440を用いてシステムを構築しているのですが、
>2週間程度の連続稼働を行うと、使用メモリが増加していることを確認したため
>top コマンドにて実行中のプロセスを確認することにしました。
>
>結果、見覚えのない 『net.agent』というプロセスが動作していることが分かりました。
>このプロセスは時間経過に応じてメモリ使用量やプロセス数が増加するようです。
>電源起動時はプロセスが2つですが、連続稼働すると以下のように4つに増えています。
>(./userapp はこちらで作成したソフト)
>
>どうやら、この『net.agent』は
>Linux 3.14, kernel: V2.08,userland: v2.04 の構成で自動で起動するようになっているようです。
>このプロセスがどういったものなのか教えていただけますでしょうか。
>
>自動起動の設定は /lib/udev/rules.d/80-networking.rules に記載されているようです。
net.agent は シェルスクリプトですので、/lib/udev/net.agent をご覧になって頂ければ、処理内容が分かります。
net.agent の役割ですが、ネットワークデバイスのホットプラグ動作のようです。たとえば、このページが参考になるかと思います:
http://yochecks.blogspot.com/2007/04/debian.html
このページに net.agent の内容が引用されていますが、net_ifup() がループバックインタフェース(lo)に対して呼び出す wait_for_interface() では、指定されたネットワークインタフェースが up するまで待ち続けます。そのため、/etc/network/interfaces で lo に対する設定がないと、net.agent が大量に起動してしまうようです:
https://serverfault.com/a/400817
しかし、 冒頭で挙げた、Armadilo-440 の Linux 3.14 用の Debian GNU/Linux 7 の /etc/network/interfaces には、
の行がありますので、このユーザーランドを変更なしでお使いなのであれば、net.agent が lo を永久待ちして終了しない、という状況にはならないと思います。確認ですが、お手元の /etc/network/interfaces の内容は、どうなっているでしょうか?