CentOS7のdmesgにperf: interrupt took too longに関するメッセージが出力される

CentOS7で運用しているサーバで「perf: interrupt took too long (3989 > 3933), lowering kernel.perf_event_max_sample_rate to 50000」というような出力が発生しているのに気がついた。

$ dmesg|grep "kernel.perf_event_max_sample_rate"
[ 1502.981806] perf: interrupt took too long (2512 > 2500), lowering kernel.perf_event_max_sample_rate to 79000
[ 2019.987492] perf: interrupt took too long (3147 > 3140), lowering kernel.perf_event_max_sample_rate to 63000
[ 2910.077414] perf: interrupt took too long (3989 > 3933), lowering kernel.perf_event_max_sample_rate to 50000
$

パフォーマンス情報を取得するために、どれくらいの周期でデータを取得したらいいのかは、サーバのハードウェア構成などによって変化するため、自動調整するようになっているようだ。

まずは、長い間隔で収集(サンプリングレート)し、うまくデータが取れているようだったら、徐々に間隔を短縮していく、ということになっているようだ。

journalctlでログから発生時刻を確認する。

# journalctl |grep "perf_event_max_sample_rate"
 2月 27 10:44:11 blog.osakana.net kernel: perf: interrupt took too long (2512 > 2500), lowering kernel.perf_event_max_sample_rate to 79000
 2月 27 10:52:48 blog.osakana.net kernel: perf: interrupt took too long (3147 > 3140), lowering kernel.perf_event_max_sample_rate to 63000
 2月 27 11:07:38 blog.osakana.net kernel: perf: interrupt took too long (3989 > 3933), lowering kernel.perf_event_max_sample_rate to 50000
#

この日は10:19頃にkernelアップデートのため再起動したことにより、サンプリングレートの値が初期化され、調整が必要になったようだ。

過去のログを遡ってみると「perf: interrupt took too long (5208 > 5190), lowering kernel.perf_event_max_sample_rate to 38000」というのが、一番低い値である模様。

最初の変更後の値が79000ということを考えると、起動時の初期値は80000以上だったと思われるので、周期が半分以下となったということである。

さて、kernel.perf_event_max_sample_rateの現在値は「/proc/sys/kernel/perf_event_max_sample_rate」で確認出来る。

# cat /proc/sys/kernel/perf_event_max_sample_rate
50000
#

値を変更する場合は、上記に値を入れる。

恒久的に変更するには、sysctlの設定ファイルを作成する。

CentOS7の場合、/etc/sysctl.d ディレクトリに設定ファイルを作成する。(/etc/sysctl.confに追加するという手もあるが、今後のパッチでsysctl.confが修正される可能性があるためお薦めしない。)

まず、現在の設定値を確認

# sysctl -a | grep perf_event_max_sample_rate
kernel.perf_event_max_sample_rate = 50000
#

/etc/sysctl.d/90-local.conf として設定値を入れた設定ファイルを作成

# echo "kernel.perf_event_max_sample_rate = 38000" > /etc/sysctl.d/90-local.conf
# cat /etc/sysctl.d/90-local.conf
kernel.perf_event_max_sample_rate = 38000
#

sysctlの設定をシステムに適用します。

# sysctl --system
* Applying /usr/lib/sysctl.d/00-system.conf ...
* Applying /usr/lib/sysctl.d/50-default.conf ...
kernel.sysrq = 16
kernel.core_uses_pid = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.d/90-local.conf ...
kernel.perf_event_max_sample_rate = 38000
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.conf ...
#

値が変更されたことを確認します。

# sysctl -a | grep perf_event_max_sample_rate
kernel.perf_event_max_sample_rate = 38000
#

2017/03/03追記
kernel.perf_event_max_sample_rate の値を調整した後、現在のところは同じメッセージは出力されていません。

2017/03/22追記
約1ヶ月経過しましたが、出力されていないので、うちの環境では38000で問題ないようです。

2018/07/09追記
別環境で作ったサーバでも38000で落ち着きました。

PowerCLIとPowerCLI Coreの双方で動くPowerShellスクリプトの作り方

2018/07/06追記

PowerCLI Coreが無くなり、VMware PowerCLI本体の方でPowerShell Coreへの対応が行われるようになった結果、ここに書いたようなモジュール名の使い分けが不要になりました。
詳細は「CentOS7環境にPowerShell CoreとVMware PowerCLIをインストール」に記載しました。


Windows環境以外でも、動作するようになったPowerShellと、VMware PowerCLI
(Power Shell Core 6.0をCentOS7で使ってみる)
(Linux上のPowerShellでvSphereの操作を行うPowerCLI Coreを試す+CentOS7で使うための回避策)

いままで作ったPowerCLI用のスクリプトを使おうとして問題発覚。

PowerCLIモジュールを「Import-Module -Name VMware.VimAutomation.Core」で読み込ませていたのだが、PowerCLI Coreではモジュール名が「PowerCLI.ViCore」に変更されていた。

また、PoweCLI Coreの手順だと、モジュール名を特定しなくとも、条件にあてはまるものを全て読み込む、ということができるやり方が提示されていた。

そこで、PowerCLIとPowerCLI Coreのどちらでも、関連モジュールを全て読み込むような記述を考えて作成した。

Write-Host "初期のモジュール読み込み状況"
Get-Module
Write-Host ""

# Windows用PowerCLIがインストールされているか?
$modulelist=Get-Module -ListAvailable VMware.Vim*
if($modulelist -eq $null){
	# modulelist Coreがインストールされているか?
	$modulelist=Get-Module -ListAvailable PowerCLI*
}
if($modulelist -eq $null){
	Write-Host "PowerCLIがインストールされていません"
	exit 1
}
$modulelist | Import-Module
Write-Host ""
Write-Host "現在のモジュール読み込み状況"
Get-Module

Windows環境での実行結果

PS C:\tmp> .\importmodule.ps1
初期のモジュール読み込み状況

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variable, Compare-Object...}


現在のモジュール読み込み状況
Script     0.0        Initialize-VMware.VimAutomation....
Script     0.0        Initialize-VMware.VimAutomation....
Script     0.0        Initialize-VMware_VimAutomation_Cis
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Binary     6.5.0.4... VMware.VimAutomation.Cis.Core       {Connect-CisServer, Disconnect-CisServer, Get-CisService}
Manifest   6.5.0.4... VMware.VimAutomation.Common
Binary     6.5.0.2... VMware.VimAutomation.Core           {Add-PassthroughDevice, Add-VirtualSwitchPhysicalNetworkAd...
Binary     6.0.0.0    VMware.VimAutomation.HA             Get-DrmInfo
Binary     6.5.0.4... VMware.VimAutomation.License        Get-LicenseDataManager
Manifest   6.5.0.4... VMware.VimAutomation.Sdk            Get-PSVersion
Binary     6.5.0.4... VMware.VimAutomation.Storage        {Copy-VDisk, Export-SpbmStoragePolicy, Get-NfsUser, Get-Sp...
Binary     6.5.0.4... VMware.VimAutomation.Vds            {Add-VDSwitchPhysicalNetworkAdapter, Add-VDSwitchVMHost, E...
Binary     6.5.0.4... VMware.VimAutomation.vROps          {Connect-OMServer, Disconnect-OMServer, Get-OMAlert, Get-O...


 C:\tmp>

CentOS7環境での実行例

# cat importmodule.ps1 |powershell
PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS /root> Write-Host "初期のモジュール読み込み状況"
初期のモジュール読み込み状況
PS /root> Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-T...
Script     1.2        PSReadLine                          {Get-PSReadlineKey...


PS /root> Write-Host ""

PS /root>
PS /root> # Windows用PowerCLIがインストールされているか?
PS /root> $modulelist=Get-Module -ListAvailable VMware.Vim*
PS /root> if($modulelist -eq $null){
>>      # modulelist Coreがインストールされているか?
>>      $modulelist=Get-Module -ListAvailable PowerCLI*
>> }
>> if($modulelist -eq $null){
>>      Write-Host "PowerCLIがインストールされていません"
>>      exit 1
>> }
>> $modulelist | Import-Module
>> Write-Host ""
>> Write-Host "現在のモジュール読み込み状況"
>> Get-Module
>>

現在のモジュール読み込み状況

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
Script     0.0        Initialize
Script     0.0        Initialize-VMware_VimAutomation_Vds
Manifest   3.1.0.0    Microsoft.PowerShell.Management     {Add-Content, Clea...
Manifest   3.1.0.0    Microsoft.PowerShell.Utility        {Add-Member, Add-T...
Binary     1.21       PowerCLI.Vds                        {Add-VDSwitchPhysi...
Binary     1.21       PowerCLI.ViCore                     {Add-PassthroughDe...
Script     1.2        PSReadLine                          {Get-PSReadlineKey...


PS /root> #

Aliexpressで$39.99で売ってる1000Mbps対応のPLC(電力線LAN)は日本で使えるのか?

2023/09/05追記+2023/09/07 HD-PLCがNessumに改称したが詳細についてはまだこれからの模様

2023/10/30追記 Nessum対応のアップデート

2023年10月末時点でのNessum関連について

2023年10月2日に規格名だけでなく、団体名であるところのHD-PLCアライアンスもNessum(ネッサム)アライアンスに改称した。

NessumではNessum WIREという同軸ケーブルもしくは電力線を使った規格と、Nessum AIRという低周波数帯域を使った無線規格の2種類が提供されることになった。

Nessum WIREの電力線に旧HD-PLC4相当の1Gbps対応が含まれているので使えそう、とか感じますが、別ページに「国内:2~28MHz 注:国内の電力線通信で使用可能な周波数は電波法により規定されています」という注釈があり、220Mbpsまでの記載がある。

このため、2023年10月末時点では、引き続き日本国内で1GbpsのPLC機器を使うと違法となる状況は変わっていない模様である。

Nessum WIREの1Gbps対応製品は国外も含めてまだ出ていないようだ。

また、海外ではHomePlus AV2 Standard / AV2000 規格で2Gbpsまで出る規格があり、製品化もされている。

2023年9月時点での現状について

PLCの規格について「HD-PLCの標準化」に現状のまとめがある。
 2010年12月 HD-PLCが IEEE 1901として承認
 ITU-Tが標準化を進めているホームネットワーク仕様が G.hn規格
  G.9960が物理層、G.9961がMAC層、G.9972が他規格との共存仕様

製品がリリースされている高速度なPLC規格は以下の4つがある

・HomePlug AV2 Standard / AV2000
・HomePlug AV2 Standard / AV1300
・G.hn wave 2 / G.hn 2400
・G.hn wave 1 / G.hn 1200

HomePlug系を定義した HomePlug は2019年以降アクセスできず消息不明のため継続性が謎。

G.hn系はHomeGrid Forum だが、このフォーラムとしては宅内配線だけではなく、GiGAWaire(G.hn Access) という宅外配線も含んだ規格を制定している。

HD-PLC(日本語)は現存しているが、2018年のHD-PLC3 multi-hopでは240Mbpsまでで、2022年予定の1Gbps規格がHD-PLC4ということになっているようだ。

HD-PLC4の場合は、2~100MHzの帯域を使用することになっているが、製品はまだない??
 → HD-PLC™ 第 4 世代規格 IEEE1901-2020 準拠 LSI ”SC1320A”を量産出荷開始 とチップは出ているが一般向け製品はまだ

G.hn製品についてはHomeGrid ForumのCertified Systems から製品検索ができる。

比較的入手しやすそうなベンダ例としてTP-LinkとXyxelをあげておく

TP-Linkの製品
 AV2000対応 TL-PA9020P KIT
 AV1300対応 TL-PA8010P KIT
 G,hn 2400対応 PG2400P KIT
 G.hn 1200対応 PG1200 KIT

Xyxelの製品
 AV2000対応 PLA5456
 G.hn 2400対応 PLA6456


当初の記載

2021/08/02: リンク先がいくつか無くなったりしてたので修正

Aliexpressを見てたら、PLC(電力線LAN)装置のペアが$39.99で販売していた。

安いけど、日本で使えるんだろうか?と調べてみた。

まず、上記の機器について調査。
中国の「Tenda」というメーカの「PH3」といい商品。
HomePlug AV2という規格に対応し、通信速度は1000Mbs。
この他に旧規格のHome Plug AVとIEEE 1901にも対応とのこと。

Tendaでは、HomePlug AV2に対応した製品を全部で4種類出している
・「PH3」ペア販売で、基本系で、LANは1ポート(2台セット)
・「PA6」無線LAN APを兼ねているもの。LANは2ポート(1台)
・「P1001P」コンセントを消費してしまうのを避けるためにタップ機能も用意。LANは1ポート(1台)
・「P1002P」P1001PのLANが2ポートになったモデル(1台)
この4製品で混在可能。


さて、規格について確認。

・HomePlug(団体名)
 「HOMEPLUG
 ここが制定してる規格がHomePlug
 2019年4月以降Webがアクセスできず、HomePlugの現状は不明

・HomePlug 1.0
 2001年リリース。
 2008年にTIA-1113として承認

・HomePlug AV 1
 2005年リリース。13Mbps~200Mbpsの規格
 家庭内でのAudio/Video配信に耐えられる規格として制定
 2010年にIEEE1901として承認された
 2~30MHzの帯域幅を使う

・HomePlug AV 2
 2012年リリース。~1300Mbpsの規格
 実行速度は出ても550Mbps
 2~30MHzに加えて、30~86MHzの帯域幅を使う

・HomePlug Green PHY
 2010年リリース。スマートグリッド向け
 HomePlug AV 1のサブセット
 10Mbpsまで

・HD-PLC(団体名)
 「HD-PLCアプライアンス
 HomePlugとは別の団体で、日本のパナソニックなどが主体となっている。
 ここが制定してる規格がHD-PLC

・HD-PLC 1
 2~28MHzの帯域幅を使用

・HD-PLC 2
 2~28MHzの帯域幅を使用
 ~210Mbpsの規格
電力線を使うだけでなく、同軸ケーブルを使用する製品も存在している

・HD-PLC 3
 新世代IEEE1901 「HD-PLC3」
(Complete、inside)について

 2~28MHzの帯域幅を使用
 ~240Mbpsの規格
電力線を使うだけでなく、同軸ケーブルを使用する製品も存在している

HD-PLC4 (Quatro Core)
 2019年3月にIEEE 1901aとして承認されたもの
 2~100MHz帯を使用し、~1000Mbpsの規格
 ただし1000Mbpsは同軸ケーブル利用の場合で、電力線は250Mbpsまで

・HomeGrid Forum(団体名)
 「HomeGrid Forum
 中国発祥の規格。

・G.hn
 HomeGrid Forumが制定するGigabit Home Networkingの規格
 TVアンテナ用の同軸ケーブルなどを利用する製品
 先日エレコムが出した「エレコム、既設の同軸ケーブルをイーサネット化するコンバーター、最長1100mの通信が可能はG.hn製品

GiGA Wire
 G.hnをベースにした拡張規格


日本で使えるか?という点について確認する

HD-PLCフォーラムの「高速PLC通信とは?」に下記記載があった。

一方、日本国内では、これまで低速PLC通信が、450kHz以下の周波数帯で商用認可されていましたが、高速PLC通信の利用は、規制されていました。 その後、高速PLC通信ニーズの高まりにより、2006年10月から短波帯(2M~30MHz)を使用した屋内利用が、規制緩和されインターネット利用で順調に市場が拡大し、出荷累計120万台を超える市場に成長しています。 また、最近では、無線LAN利用拡大に伴う通信障害対策としての利用ニーズも高まりを見せています。 このような背景の下、2013年9月には、屋外利用の規制緩和も行われ今後、高速PLCの利用範囲は、更にさまざまな分野に広がるものと期待されています。

2~30MHz帯を使えば問題ないが、それ以上を使うHomePlug AV2では問題があるようだ。

Remix OS for Mobile

2025/07/24追記

JideがやろうとしたAndroid OSベースにLinuxを載せる方面の後継はいない感じですが、なんかGoogleがAndroid OS自体をChrome OSによせてくような感じの話をしていますね・・・

Chrome OS/Chromium OSベースとしては fydeOS とそれのオープンソース版 openFydeというのがあります。x86_64だけではなく、ラズパイ4/5やRK3588搭載ボード系にも対応しています。2025年時点でGoogle以外から選ぶとするなら最有力でしょう。

Jide.comは2025年時点でもサイトは生きていて、RK3399搭載のタブレット Jide Pro 2 とかJide OS XJide OS とかありますが、提供方法について触れていません。

Remix OSをforkしたというPhoenix OSはサイトを https://phoenix-os.sourceforge.io/ に移転したあと2023年9月頃まで動いていたようですが、最終リリースのファイルはPhoenixOS_Downloader_3.0.exe と実行ファイル形式なのでちょっと恐い感じですね


2018/01/22追記
Jideはサイトは生きてますが、サポートページ消滅、アップデートも提供されない、クラウドファンディングも中止と、死にました。
この「Remix OS for Mobile」は姿を見せることはありませんでした。

Remix OSと同じようにIntelアーキテクチャ向けのタブレット/ノートパソコン向けAndroid OSとして「Phoenix OS」というのがでています。


Jideが作成しているAndroid OS+UbuntuみたいなRemix OSというのがある。

主にタブレット向けとして出ていて、ARM系CPUのものと、Intel CPUのものをサポートしている。
ただし、ARM系のサポートは結構微妙で、Remix OS 1.0のみ、とか、Remix OS 2.0のみ、とか結構ある。
これじゃ、元のAndroid側で、タブレットで採用されやすいRockchipなどのSoCへの対応具合が微妙なところがあるから・・・

さて、そんなRemix OSから新しい展開が発表。
Remix OS for Mobile

Windows 10 Mobileの「Windows Continuum」と同じように、スマホを利用して、大画面でキーボードとマウスによるマルチウィンドウ操作が行えるようになる、というもののようだ。

恐らく、同じLinux系ベースの「Ubuntu Mobile」がやろうとしていた「Ubuntu Convergence」のあたりも利用していそうな気がします

現在、スマホ向けのRemix OSを採用しているところはないので、実現するかどうかは、非常に微妙じゃないかなーという気もしますが、果たしてどうなりますことやら?

なお、Remix OSですが、一部にGoogle Playストアが使える、という話が書かれていたりします。
しかし、これは、どっちかというと非公式にインストールされているもので、正式にはGoogle Playストアは入っていないことになっています。
(注:初期は、Google Playストアが入っていましたが、Googleからのクレームで除去されました)

muninのDisk IOs per deviceからsdaなどを除外する

Linux LVMベースでパーテーションが構成されている環境で、muninを使ったら、Disk IOs per deviceなどで、「sda」が存在していた。

今回の環境だと、sda内に、それ以外のLVMが含まれている形となるので、sda自体を表示する意味がほとんど無いので、除外しようと思う。

資料は「diskstats 」。

「/etc/munin/plugin-conf.d/diskstats」というファイルに下記を記載した。

[diskstats]
env.exclude sda

この変更を行った後は、下記の様なグラフとなった。