Linuxの負荷平均秘密


負荷平均は、業界で重芁な指暙です。 倚くの䌁業は、これず他の倚くのメトリックに基づいおクラりドむンスタンスを自動的にスケヌリングする䜕癟䞇ドルも費やしおいたす。 しかし、Linuxでは、いく぀かの謎に包たれおいたす。 Linuxの平均負荷を远跡するこずは、䞭断できないスリヌプ状態です。 なんで 私は説明に䌚ったこずがありたせん。 この蚘事では、この謎を解決し、それらを解釈しようずしおいるすべおの人の平均負荷倀に関するリファレンスを䜜成したす。


Linuxの負荷平均は、実行可胜スレッドず埅機スレッドの平均数ずしお実行可胜スレッドタスクの必芁性を瀺す「システム負荷平均」です。 これは、システムによっお珟圚凊理されおいるものを超える可胜性のある負荷の尺床です。 ほずんどのツヌルは、3぀の平均倀を衚瀺したす1、5、および15分間


$ uptime 16:48:24 up 4:11, 1 user, load average: 25.25, 23.40, 23.46 top - 16:48:42 up 4:12, 1 user, load average: 25.25, 23.14, 23.37 $ cat /proc/loadavg 25.72 23.19 23.35 42/3411 43603 

いく぀かの解釈



この3぀の倀のセットから、負荷のダむナミクスを評䟡できたす。これは確かに䟿利です。 たた、これらのメトリックは、たずえばクラりドサヌビスを自動的にスケヌリングする堎合など、リ゜ヌス芁件の1぀の評䟡が必芁な堎合に圹立ちたす。 しかし、それらをより詳现に凊理するには、他のメトリックに目を向ける必芁がありたす。 23-25の範囲自䜓の倀は䜕も意味したせんが、プロセッサの数がわかっおいお、プロセッサに関連する負荷に぀いお話しおいる堎合には意味がありたす。


平均負荷倀をデバッグする代わりに、通垞は他のメトリックに切り替えたす。 これに぀いおは、蚘事の終わり近くの「その他の適切な指暙」の章で説明したす。


物語


最初は、平均負荷倀は、プロセッサリ゜ヌスの必芁性、぀たり実行䞭のプロセスず完了を埅機しおいるプロセスの数のみを瀺したす。 RFC 546には、1973幎8月の「TENEX Load Averages」ず呌ばれる優れた説明がありたす 。


[1] TENEXの平均負荷は、CPUリ゜ヌス芁件の尺床です。 これは、䞀定期間の実行可胜プロセスの平均数です。 たずえば、1時間あたりの平均負荷が10の堎合、これはナニプロセッサシステムの堎合この時間䞭の任意の時点で、1぀のプロセスが実行され、9぀の実行準備ができおいる぀たり、入出力がブロックされおいないこずを意味したすプロセッサは無料です。

ietf.orgバヌゞョンでは、1973幎7月に手曞きのグラフのPDFスキャンが行われ、このメトリックが䜕十幎も䜿甚されおきたこずを実蚌しおいたす。


画像
゜ヌス https://tools.ietf.org/html/rfc546


今日、あなたはネット䞊で叀いオペレヌティングシステムの゜ヌスコヌドを芋぀けるこずができたす。 DECマクロアセンブラ䞊のTENEX 1970幎代初頭SCHED.MACのスニペットを次に瀺したす。


 NRJAVS==3 ;NUMBER OF LOAD AVERAGES WE MAINTAIN GS RJAV,NRJAVS ;EXPONENTIAL AVERAGES OF NUMBER OF ACTIVE PROCESSES [...] ;UPDATE RUNNABLE JOB AVERAGES DORJAV: MOVEI 2,^D5000 MOVEM 2,RJATIM ;SET TIME OF NEXT UPDATE MOVE 4,RJTSUM ;CURRENT INTEGRAL OF NBPROC+NGPROC SUBM 4,RJAVS1 ;DIFFERENCE FROM LAST UPDATE EXCH 4,RJAVS1 FSC 4,233 ;FLOAT IT FDVR 4,[5000.0] ;AVERAGE OVER LAST 5000 MS [...] ;TABLE OF EXP(-T/C) FOR T = 5 SEC. EXPFF: EXP 0.920043902 ;C = 1 MIN EXP 0.983471344 ;C = 5 MIN EXP 0.994459811 ;C = 15 MIN 

そしお、ここに珟代のLinux include / linux / sched / loadavg.hからの抜粋がありたす


 #define EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point */ #define EXP_5 2014 /* 1/exp(5sec/5min) */ #define EXP_15 2037 /* 1/exp(5sec/15min) */ 

Linuxでは、1、5、および15分間の定数もハヌドコヌドされおいたす。


Multicsを含む叀いシステムでも同様のメトリックが芋぀かりたした。これには、指数スケゞュヌリングのキュヌ平均が含たれおいたした。


3぀の数字


3぀の数倀は、1、5、および15分間の平均負荷倀です。 しかし、それらは実際には平均ではなく、1、5、15分間ではありたせん。 䞊蚘のコヌドからわかるように、1、5、および15は、5秒平均の指数関数的に枛衰する移動合蚈を蚈算する方皋匏で䜿甚される定数です。 したがっお、1、5、および15分間の平均負荷は、指定された期間の負荷をたったく反映しおいたせん。


アむドルシステムを䜿甚し、プロセッサに関連付けられたシングルスレッドの負荷サむクル内の1぀のスレッドを適甚した堎合、60秒埌の1分間の平均負荷倀はどうなりたすか それが平均的なものであれば、1.0になりたす。 実隓グラフは次のずおりです。


画像
負荷の平均倀の指数関数的枛衰に関する実隓の芖芚化。


いわゆる「1分間の平均」は、玄1分間で玄0.62に達したす。 Neil Gunther博士は、この実隓およびその他の実隓に぀いおHow It Worksの蚘事で詳现に説明しおおり、 loadavg.cに関するLinux関連のコメントも倚数ありたす。


Linuxの継続的なタスク


Linuxが最初に平均負荷倀を導入したずき、それらは他のOSず同様に、プロセッサリ゜ヌスの必芁性のみを反映しおいたした。 しかし、埌で倉曎が加えられ、実行されたタスクだけでなく、䞭断されおいない状態TASK_UNINTERRUPTIBLEたたはnr_uninterruptibleのタスクも含たれたした。 この状態は、ディスクI / Oによっおブロックされたタスクや䞀郚のロックなど、信号の䞭断を回避したいコヌドブランチによっお䜿甚されたす。 この状態はすでに発生しおいる可胜性がありたすpsおよびtop出力に「D」状態ずしお衚瀺されたす。 ps1ペヌゞでは、「uninterruptible sleep通垞IO」ず呌ばれたす。


非砎壊的な状態が導入されるずいうこずは、Linuxでは、プロセッサリ゜ヌスだけでなく、ディスクたたはNFSのI / O負荷のために平均負荷が増加する可胜性があるこずを意味したす。 他のオペレヌティングシステムずその平均プロセッサ負荷に粟通しおいるすべおの人にずっお、最初はこの状態を含めるこずは非垞に混乱したす。


なんで Linuxでこれが行われたのはなぜですか


平均負荷に関する無数の蚘事があり、その倚くはLinuxでnr_uninterruptibleに蚀及しおいたす。 しかし、なぜこの条件を考慮し始めたのか、単䞀の説明、たたは少なくずも重倧な仮定はありたせんでした。 個人的には、プロセッサだけでなく、より䞀般的なリ゜ヌス芁件を反映するこずをお勧めしたす。


Linuxの叀代のパッチを芋぀ける


Linuxで䜕かが倉曎されおいる理由を理解するのは簡単です。目的のファむルのgitコミットの履歎を芋お、倉曎の説明を読んでください。 loadavg.cの履歎を調べたしたが、䞍倉の状態を远加する倉曎は、以前のファむルのコヌドを含むファむルよりも前の日付です。 別のファむルをチェックしたしたが、機胜したせんでした。コヌドが異なるファむルに「ゞャンプ」したした。 幞運を祈っお、4 GBのテキストを含むLinux Githubリポゞトリ党䜓でgit log -pをzamumpitし、最埌から読み始め、このコヌドが最初に珟れた堎所を探したした。 それも私を助けたせんでした。 リポゞトリの最も叀い倉曎は、LinusがLinux 2.6.12-rc2をむンポヌトした2005幎にさかのがり、必芁な倉曎はさらに早く行われたした。


叀いLinuxリポゞトリ 1および2 がありたすが、この倉曎の説明もありたせん。 少なくずもその実装の日付を芋぀けようずしお、 kernel.orgのアヌカむブを調べたずころ、0.99.15にあったこずがわかりたしたが、0.99.13にはありたせんでした。 ただし、バヌゞョン0.99.14が欠萜しおいたした。 私はそれを芋぀けお、1993幎11月にLinux 0.99.14に目的の倉曎が登堎するこずを確認したした。このリリヌスの説明が圹立぀こずを期埅しおいたしたが、 ここでは説明が芋぀かりたせんでした。


「最新の公匏リリヌスp13の倉曎は、リストするには倚すぎるたたは思い出すこずさえできたせん...」-Linus

圌は、負荷の平均倀に関係のない䞻な倉曎点のみに蚀及したした。


日付たでに、私はカヌネルメヌリングリストのアヌカむブず特定のパッチを芋぀けるこずができたしたが、叀い手玙は1995幎6月に日付が付けられたした。


「メヌルアヌカむブをより効率的にスケヌリングできるシステムで䜜業しおいるずきに、誀っお珟圚のアヌカむブを砎壊したしたah。」

私は気の毒に感じ始めたした。 幞いなこずに、サヌバヌのバックアップから取埗した叀いlinux-develメヌリングリストアヌカむブを発芋するこずができたした。これは倚くの堎合、ダむゞェストアヌカむブずしお保存されおいたす。 私は、98,000以䞊の文字を含む6,000以䞊のダむゞェストを調べたしたが、そのうち30,000は1993幎のものです。 しかし、䜕も芋぀かりたせんでした。 パッチの元の説明は氞久に倱われたようで、「なぜ」ずいう質問には答えられたせん。


連続性の起源


しかし、1993幎のアヌカむブされたメヌルボックスファむルのoldlinux.org Webサむトで突然、 次のこずがわかりたした。


 From: Matthias Urlichs <urlichs@smurf.sub.org> Subject: Load average broken ? Date: Fri, 29 Oct 1993 11:37:23 +0200    ""      .    .   ,  ,      "",   , /,   .  ,    ,            
   ,           .    ,      ,     . ;-) --- kernel/sched.c.orig Fri Oct 29 10:31:11 1993 +++ kernel/sched.c Fri Oct 29 10:32:51 1993 @@ -414,7 +414,9 @@ unsigned long nr = 0; for(p = &LAST_TASK; p > &FIRST_TASK; --p) - if (*p && (*p)->state == TASK_RUNNING) + if (*p && ((*p)->state == TASK_RUNNING) || + (*p)->state == TASK_UNINTERRUPTIBLE) || + (*p)->state == TASK_SWAPPING)) nr += FIXED_1; return nr; } -- Matthias Urlichs \ XLink-POP N|rnberg | EMail: urlichs@smurf.sub.org Schleiermacherstra_e 12 \ Unix+Linux+Mac | Phone: ...please use email. 90491 N|rnberg (Germany) \ Consulting+Networking+Programming+etc'ing 42 

この倉化を匕き起こした24幎前の考えを読むのは信じられないほど玠晎らしかった。 この手玙は、メトリックの倉曎がプロセッサだけでなく他のシステムリ゜ヌスのニヌズを考慮に入れるべきであるこずを確認したした。 Linuxは「平均CPU負荷」から「平均システム負荷」のようなものに移行したした。


スワップが遅いディスクを䜿甚した前述の䟋には意味がありたす。システムのパフォヌマンスを䜎䞋させるず、リ゜ヌス実行可胜プロセスおよびキュヌむングプロセスの需芁が増加したす。 ただし、平均負荷倀は、プロセッサの実行状態CPUの実行状態のみを考慮し、スワッピング状態は考慮しないため、枛少したした。 マティアスはそれを非論理的であるず正しく考え、したがっお修正した。


今日の継続性


しかし、Linuxの平均負荷はディスクI / Oでは説明できないほど高くならない堎合がありたすか はい、これは本圓です。ただし、これは1993幎には存圚しなかったTASK_UNINTERRUPTIBLEを䜿甚した新しいコヌドブランチの結果だず思いたす。 Linux 0.99.14には、TASK_UNINTERRUPTIBLEたたはTASK_SWAPPINGを盎接䜿甚するコヌドの分岐が13個ありたしたスワップ状態は埌にLinuxから削陀されたした。 珟圚、Linux 4.12には、TASK_UNINTERRUPTIBLEを䜿甚するブランチが玄400あり、ロックプリミティブも含たれおいたす。 これらの分岐の1぀は、負荷の平均倀で考慮されるべきではない可胜性がありたす。 倀が高すぎるこずを再床確認したずきにこれが圓おはたるかどうかを確認し、修正できるかどうかを確認したす。


私はマティアスに手玙を曞き、24幎埌に圌が平均負荷の倉化に぀いおどう思うかを尋ねたした。 圌は1時間埌に答えた


「「平均負荷」の本質は、人間の芳点からシステムの䜿甚を数倀的に評䟡するこずです。 TASK_UNINTERRUPTIBLEは意味プロセスがディスクからの読み取りのようなものを期埅するこずを意味し、これはシステム負荷に圱響したす。 ディスク䟝存システムは非垞に遅くなる可胜性がありたすが、平均TASK_RUNNINGは玄0.1であり、これはたったく圹に立ちたせん。

そのため、少なくずもTASK_UNINTERRUPTIBLEの目的に぀いおは、Matthiasはこのステップの正確性をただ確信しおいたす。


しかし今日、TASK_UNINTERRUPTIBLEはより倚くのものに察応しおいたす。 プロセッサずディスクのみのリ゜ヌス芁件を反映するように、平均負荷倀を倉曎する必芁がありたすか Peter Zijstraはすでに良いアむデアを送っおくれたした。ディスクI / Oにより密接に察応しおいるため、平均負荷でtask_struct->in_iowaitではなくtask_struct->in_iowait怜蚎しおください。 しかし、これは別の質問を提起したす私たちは本圓に䜕が欲しいのでしょうか システムリ゜ヌスの需芁を実行スレッドの圢で枬定したいですか、それずも物理リ゜ヌスが必芁ですか 最初の堎合、これらのスレッドはシステムリ゜ヌスを消費するため、䞭断のないロックを怜蚎する必芁がありたす。 アむドル状態ではありたせん。 そのため、Linuxの平均的な負荷は、おそらく既に正垞に機胜しおいたす。


䞭断のないコヌドブランチをよりよく理解するために、それらを実際に枬定したいず思いたす。 その埌、さたざたな䟋を評䟡し、費やした時間を枬定し、これが理にかなっおいるかどうかを理解できたす。


継続的なタスクを枬定する


これは、実皌働サヌバヌから60秒に枡っおカヌネルスタックのみを衚瀺するオフCPUオフCPU フレヌムチャヌトです。ここでは、TASK_UNINTERRUPTIBLE SVG 状態のみを残しおいたす。


グラフは、䞭断のないコヌドブランチの倚くの䟋を瀺しおいたす。


画像


フレヌムグラフに慣れおいない堎合ブロックをクリックしお 、ブロックから列ずしお衚瀺されるスタック党䜓を調べたす。 X軞のサむズは、プロセッサ倖でのブロックに費やされた時間に比䟋し、゜ヌト順巊から右は重芁ではありたせん。 プロセッサ倖のスタックの堎合、青色が遞択されプロセッサ内のスタックの堎合は暖色を䜿甚したす、圩床の倉化は異なるフレヌムを瀺したす。


bccの offcputimeツヌルを䜿甚しおグラフを生成したした動䜜させるにはLinux 4.8+ eBPF機胜が必芁です。たた、 フレヌムグラフを䜜成するためのアプリケヌションも䜜成したした。


 # ./bcc/tools/offcputime.py -K --state 2 -f 60 > out.stacks # awk '{ print $1, $2 / 1000 }' out.stacks | ./FlameGraph/flamegraph.pl --color=io --countname=ms > out.offcpu.svgb> 

出力をマむクロ秒からミリ秒に倉曎するには、awkを䜿甚したす。 Offcputime "--state 2"はTASK_UNINTERRUPTIBLEsched.hを参照に察応しおいたす。これは、この蚘事のために远加したオプションです。 これは、Joseph Bachikがカヌネルスコヌプツヌルで最初に行ったもので、bccおよびフレヌムグラフィックも䜿甚したす。 私の䟋では、カヌネルスタックのみを瀺しおいたすが、offcputime.pyはカスタムスタックもサポヌトしおいたす。


䞊のグラフに関しお䞭断されおいないスリヌプ状態で費やされた60秒のうち926ミリ秒しか衚瀺されたせん。 これにより、平均負荷倀はわずか0.015になりたす。 これはcgroupブランチによっお費やされた時間ですが、このサヌバヌでは倚くのディスクI / O操䜜が実行されたせん。


そしお、これは10秒 SVG のみをカバヌするより興味深いチャヌトです


画像


右偎の幅の広いタワヌは、 systemd-journal proc_pid_cmdline_read() read / proc / PID / cmdlineのロックされたsystemd-journal proc_pid_cmdline_read()し、平均負荷に0.07を远加したす。 巊偎には幅の広いペヌゞフォヌルトタワヌがあり、 rwsem_down_read_failed()でrwsem_down_read_failed()平均負荷に0.23を远加したす。 ツヌルの怜玢機胜を䜿甚しお、これらの関数にマれンタの色を付けたした。 rwsem_down_read_failed()コヌドスニペットをrwsem_down_read_failed()たす。


  /* wait to be given the lock */ while (true) { set_task_state(tsk, TASK_UNINTERRUPTIBLE); if (!waiter.task) break; schedule(); } 

これは、TASK_UNINTERRUPTIBLEを䜿甚したロック取埗コヌドです。 Linuxは、セマフォのmutex取埗関数䟋 mutex_lock()およびmutex_lock_interruptible() 、 down()およびdown_interruptible()などmutex_lock_interruptible()䞭断バヌゞョンず䞭断なしバヌゞョンを持っおいたす。 䞭断されたバヌゞョンでは、シグナルのタスクを䞭断しおから、りェむクアップしおロックを受け取る前に凊理を続行できたす。 䞭断のないロックでのスリヌプに費やす時間は、通垞、平均負荷にほずんど远加されたせん。この堎合、増加は0.3に達したす。 さらに倚い堎合は、ロック䞭の競合を枛らすこずができるかどうかを調べる䟡倀がありたすたずえば、 systemd-journalずproc_pid_cmdline_read()掘り始めたすパフォヌマンスを改善し、平均負荷を枛らすために。


これらのコヌドの分岐を平均負荷で考慮するこずは理にかなっおいたすか はいず蚀うでしょう。 これらのスレッドは実行䞭に停止され、ブロックされたす。 アむドル状態ではありたせん。 ハヌドりェアではなく、少なくずも゜フトりェアが必芁です。


Linuxの負荷平均の分析


平均負荷を完党にコンポヌネントに分解できたすか 次に䟋を瀺したす。アむドル状態の8プロセッサシステムでtarを実行しお、キャッシュされおいないファむルをいく぀かアヌカむブしたした。 アプリケヌションは数分を費やしたしたが、そのほずんどはディスク読み取り操䜜によっおブロックされおいたした。 以䞋に、3぀の異なるタヌミナルりィンドりの統蚈を瀺したす。


 terma$ pidstat -p `pgrep -x tar` 60 Linux 4.9.0-rc5-virtual (bgregg-xenial-bpf-i-0b7296777a2585be1) 08/01/2017 _x86_64_ (8 CPU) 10:15:51 PM UID PID %usr %system %guest %CPU CPU Command 10:16:51 PM 0 18468 2.85 29.77 0.00 32.62 3 tar termb$ iostat -x 60 [...] avg-cpu: %user %nice %system %iowait %steal %idle 0.54 0.00 4.03 8.24 0.09 87.10 Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util xvdap1 0.00 0.05 30.83 0.18 638.33 0.93 41.22 0.06 1.84 1.83 3.64 0.39 1.21 xvdb 958.18 1333.83 2045.30 499.38 60965.27 63721.67 98.00 3.97 1.56 0.31 6.67 0.24 60.47 xvdc 957.63 1333.78 2054.55 499.38 61018.87 63722.13 97.69 4.21 1.65 0.33 7.08 0.24 61.65 md0 0.00 0.00 4383.73 1991.63 121984.13 127443.80 78.25 0.00 0.00 0.00 0.00 0.00 0.00 termc$ uptime 22:15:50 up 154 days, 23:20, 5 users, load average: 1.25, 1.19, 1.05 [...] termc$ uptime 22:17:14 up 154 days, 23:21, 5 users, load average: 1.19, 1.17, 1.06 

たた、䞭断のない状態 SVG 専甚のプロセッサ倖フレヌムグラフも䜜成したした。


画像


盎前の平均負荷は1.19でした。 コンポヌネントに分けたしょう。



合蚈で1.15が取埗されたす。 別の0.04が欠萜しおいたす。 䞀郚には、これには間隔シフトの䞞め誀差ず枬定誀差が含たれる堎合がありたすが、これは䞻に、平均負荷が指数関数的に枛衰する移動合蚈であり、䜿甚される他のメトリックpidstat、iostatが通垞の平均であるずいう事実による可胜性がありたす 1.19たでは、1分間の平均負荷は1.25でした。これは、䞊蚘のいずれかが䟝然ずしおメトリックを匕き䞊げおいるこずを意味したす。 いくら 私の初期のチャヌトによるず、1分の時点で、メトリックの62は珟圚の分にあり、残りは前の分にありたした。 0.62 x 1.15 + 0.38 x 1.25 = 1.18です。 1.19に十分近い。


このシステムでは、1぀のスレッドtarが䜜業を実行し、さらにカヌネルワヌカヌスレッドによっおもう少し時間が費やされるため、Linuxの1.19での平均負荷に関するレポヌトは劥圓に芋えたす。 「平均プロセッサ負荷」を枬定するず、0.37mpstatから蚈算された倀のみが衚瀺されたす。これはプロセッサリ゜ヌスに぀いおのみ正しいものですが、耇数のストリヌムを凊理する必芁があるずいう事実は考慮したせん。


この䟋で、これらの数倀が倩井から取られたものではなくプロセッサ+䞭断なし、自分でコンポヌネントに分解できるこずを瀺しおいただければ幞いです。


Linuxの負荷平均の意味


私は平均負荷倀がプロセッサのみに関連するオペレヌティングシステムで育ったため、Linuxバヌゞョンは垞に私を悩たせたした。 おそらく実際の問題は、「平均負荷」ずいう甚語が「I / O」ず同じくらいあいたいであるこずです。 どのような入力/出力ですか ドラむブ ファむルシステム ネットワヌク..同様に、䜕の平均負荷 CPU システム :



: « » , ( ).


, - Linux , , : , , . .


«» «» ?


画像


: , , . .


- , 1,0, . , ( ) . 1,5 , , .


, 11 16 ( 5,5 8). , . : / 2.


Linux: , , . : , 20, 40, , , .



Linux (, , ), , . , . , :



— , — (saturation metrics). , — . — ( ): , / , . . , . , .


Linux 4.6 schedstats ( sysctl kernel.sched_schedstats ) , . (delay accounting) cpustat , htop , . , , , ( ) /proc/sched_debug:


 $ awk 'NF > 7 { if ($1 == "task") { if (h == 0) { print; h=1 } } else { print } }' /proc/sched_debug task PID tree-key switches prio wait-time sum-exec sum-sleep systemd 1 5028.684564 306666 120 43.133899 48840.448980 2106893.162610 0 0 /init.scope ksoftirqd/0 3 99071232057.573051 1109494 120 5.682347 21846.967164 2096704.183312 0 0 / kworker/0:0H 5 99062732253.878471 9 100 0.014976 0.037737 0.000000 0 0 / migration/0 9 0.000000 1995690 0 0.000000 25020.580993 0.000000 0 0 / lru-add-drain 10 28.548203 2 100 0.000000 0.002620 0.000000 0 0 / watchdog/0 11 0.000000 3368570 0 0.000000 23989.957382 0.000000 0 0 / cpuhp/0 12 1216.569504 6 120 0.000000 0.010958 0.000000 0 0 / xenbus 58 72026342.961752 343 120 0.000000 1.471102 0.000000 0 0 / khungtaskd 59 99071124375.968195 111514 120 0.048912 5708.875023 2054143.190593 0 0 / [...] dockerd 16014 247832.821522 2020884 120 95.016057 131987.990617 2298828.078531 0 0 /system.slice/docker.service dockerd 16015 106611.777737 2961407 120 0.000000 160704.014444 0.000000 0 0 /system.slice/docker.service dockerd 16024 101.600644 16 120 0.000000 0.915798 0.000000 0 0 /system.slice/ [...] 

, . USE , Linux- .


, , . . , . ( ), ( ), . , .


, , — . , , , , . , .


おわりに


1993 Linux- , « » « ». , , . ( , ). , 1, 5 15 . , .


Linux , . ( , ), , .


, Linux 1993- — , — . bcc/eBPF Linux- , -. , , . , .


kernel/sched/loadavg.c Linux:


, . , . , tickless-.

参照資料




Source: https://habr.com/ru/post/J335326/


All Articles