Rumah Tutorial sistem LINUX Analisis metrik penggunaan CPU!

Analisis metrik penggunaan CPU!

Jun 01, 2024 pm 09:18 PM
linux tutorial linux Topi Merah sistem linux arahan linux pensijilan linux linux topi merah video linux

Betul, apa yang saya bincangkan di sini ialah metrik "%CPU" yang semua orang gunakan di mana-mana, dalam setiap produk pemantauan prestasi. Gunakan arahan atas(1) untuk melihatnya.
Anda mungkin fikir 90% penggunaan CPU bermakna:
Analisis metrik penggunaan CPU!
Dan sebenarnya ia mungkin bermaksud:
Analisis metrik penggunaan CPU!
Terhenti bermakna pemproses tidak membuat kemajuan dalam arahan pemprosesan, biasanya kerana pemproses sedang menunggu input/output memori. Nisbah yang saya lukis di atas (antara sibuk dan tersekat) ialah perkara yang sering saya lihat dalam persekitaran pengeluaran sebenar. Ada kemungkinan bahawa anda pada dasarnya buntu dan tidak mengetahuinya.

Apakah maksud ini kepada anda? Mengetahui berapa banyak CPU anda terhenti boleh membimbing usaha penalaan prestasi antara mengurangkan kod atau mengurangkan I/O memori. Sesiapa sahaja yang mengambil berat tentang prestasi CPU, terutamanya dalam awan yang menskalakan sumber secara automatik berdasarkan CPU, akan mendapat manfaat daripada mengetahui di mana %CPU terhenti.

Apakah penggunaan CPU sebenarnya?

Ukuran yang kami panggil penggunaan CPU sebenarnya ialah "masa tidak terbiar": iaitu masa CPU tidak menjalankan benang terbiar. Kernel sistem pengendalian anda (walau apa pun) biasanya menjejaki metrik ini semasa penukaran konteks. Jika proses tidak melahu mula berjalan dan kemudian berhenti selama 100 milisaat, kernel masih menganggap CPU sedang digunakan untuk keseluruhan tempoh tersebut.

Metrik ini setua sistem perkongsian masa. Komputer panduan Apollo Lunar Module, sistem perkongsian masa perintis, memanggil benang terbiarnya "DUMMY JOB" Jurutera menjejaki kitaran yang diperlukan untuk menjalankan benang melahu berbanding kitaran yang diperlukan untuk menjalankan tugas sebenar sebagai ukuran komputer. Penunjuk penting penggunaan.

Jadi apa yang salah dengan penunjuk ini?

Kini, CPU telah menjadi lebih pantas daripada memori utama, dan memori menunggu menyumbang sebahagian besar daripada apa yang masih dipanggil "penggunaan CPU". Jika anda melihat nombor %CPU yang tinggi, anda mungkin berfikir bahawa pemproses adalah kesesakan (iaitu pakej CPU di bawah heatsink dan kipas), sedangkan modul DRAM itu sebenarnya adalah kesesakan.

Keadaan dalam hal ini semakin serius. Untuk masa yang lama, pengeluar pemproses telah meningkatkan kelajuan jam lebih daripada DRAM telah meningkatkan kependaman akses Ini adalah apa yang dipanggil "CPU DRAM gap" (CPU DRAM gap). Keadaan ini stabil sekitar tahun 2005, apabila pemproses 3 GHz diperkenalkan sejak itu, pemproses telah menggunakan lebih banyak teras dan hyper-threading untuk meningkatkan prestasi, dan menggunakan konfigurasi berbilang soket, yang kesemuanya telah meletakkan permintaan yang lebih tinggi pada subsistem memori. Pengeluar pemproses cuba mengurangkan kesesakan memori ini dengan menggunakan cache CPU yang lebih besar dan lebih pintar serta bas memori yang lebih pantas dan teknologi antara sambungan. Tetapi kita secara amnya masih buntu.

Bagaimana untuk menunjukkan apa yang sebenarnya sedang diproses oleh CPU?

Boleh juga menggunakan Kaunter Pemantauan Prestasi (PMC): Ini ialah kaunter perkakasan yang boleh dibaca menggunakan Linux perf dan alatan lain. Contohnya, mengukur keseluruhan sistem selama 10 saat:

# perf stat -a — sleep 10
Performance counter stats for ‘system wide’:
641398.723351      task-clock (msec)         #  64.116 CPUs utilized         (100.00%)
379,651      context-switches          #    0.592 K/sec                 (100.00%)
51,546      cpu-migrations           #    0.080 K/sec                 (100.00%)
13,423,039       page-faults              #    0.021 M/sec
1,433,972,173,374      cycles                  #    2.236 GHz                  (75.02%)
<not>      stalled-cycles-frontend
<not>      stalled-cycles-backend
1,118,336,816,068      instructions              #    0.78  insns per cycle          (75.01%)
249,644,142,804       branches               #   389.218 M/sec                (75.01%)
7,791,449,769       branch-misses            #  3.12% of all branches          (75.01%)
10.003794539 seconds time elapsed</not></not>
Salin selepas log masuk

Metrik utama di sini ialah arahan setiap kitaran (iaitu IPC), yang menunjukkan bilangan arahan yang kami lengkapkan secara purata bagi setiap kitaran jam CPU. Ringkasnya, lebih tinggi nilai, lebih baik. 0.78 dalam contoh di atas kedengaran bagus (sibuk 78% masa); tetapi tidak apabila anda menyedari bahawa IPC pada kelajuan tertinggi pemproses ialah 4.0. Ini juga dipanggil 4-lebar, yang merujuk kepada laluan pengambilan/nyahkod arahan. Ini bermakna CPU boleh berhenti (melengkapkan) empat arahan setiap kitaran jam. Jadi, IPC 0.78 pada sistem 4 lebar bermakna CPU berjalan pada 19.5% daripada kelajuan maksimumnya. Pemproses Intel Skylake baharu adalah 5-lebar.

Terdapat ratusan lagi PMC yang boleh anda gunakan untuk menyelidiki lebih lanjut: anda boleh terus mengukur tempoh bertakung mengikut jenis yang berbeza.

Di awan

如果你在虚拟环境中,可能无法访问PMC,这要看虚拟机管理程序是否为访客(guest)支持PMC。我最近写过一篇文章:《EC2的PMC:测量IPC》,表明了如今PMC如何可用于基于Xen的AWS EC2云上面的专用主机类型。

实际对策

如果你的IPC

如果你的IPC > 1.0,你可能是指令密集型。想方设法减少代码执行:消除不必要的工作和缓存操作等。CPU火焰图是一款很适合开展这项调查的工具。至于硬件调优,不妨试一试更快的时钟频率和数量更多的核心/超线程。

性能监测产品应该能告诉你什么?

每一款性能工具应该显示IPC以及%CPU。或者将%CPU分解成指令完成周期与停滞周期,比如%INS和%STL。

面向Linux的tiptop(1)可按进程显示IPC:

tiptop –                 [root]
Tasks: 96 total,    3 displayed                                 screen   0: default
 
PID [ %CPU] %SYS  P   Mcycle   Minstr  IPC %MISS %BMIS  %BUS COMMAND
3897   35.3   28.5    4   274.06   178.23 0.65   0.06  0.00   0.0     java
1319+   5.5    2.6   6    87.32   125.55 1.44   0.34  0.26  0.0    nm-applet
900    0.9  0.0    6    25.91    55.55 2.14   0.12  0.21     0.0     dbus-daemo
Salin selepas log masuk
CPU使用率具有误导性的其他理由

让CPU使用率具有误导性的不仅仅是内存停滞周期。其他因素包括如下:

  • 温度过高导致处理器停滞。
  • 睿频加速(Turboboost)导致时钟频率不一。
  • 内核因speedstep导致时钟频率不一。
  • 平均值方面的问题:1分钟内的使用率为80%,隐藏了100%的突发使用率。
  • 自旋锁:CPU被使用,有很高的IPC,但是应用程序在处理指令方面没有合理的进展。
结束语

CPU使用率已成为一个极具误导性的度量指标:它包括了等待主内存的周期,而这类周期在现代工作负载中占了大头。如果使用额外的度量指标,你就能搞清楚%CPU到底意味着什么,包括每个周期指令(IPC)。IPC 1.0可能意味着指令密集型。我在之前的一篇文章中介绍了IPC,包括介绍了衡量IPC所需要的性能监控计数器(PMC)。 显示%CPU的性能监控产品还应该显示PMC度量指标,解释那个值意味着什么,那样才不会误导最终用户。比如说,它们可以一并显示%CPU及IPC,以及/或指令完成周期与停滞周期。有了这些度量指标,开发人员和操作人员才能决定如何才能更好地调优应用程序和系统。

Atas ialah kandungan terperinci Analisis metrik penggunaan CPU!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbezaan antara centos dan ubuntu Perbezaan antara centos dan ubuntu Apr 14, 2025 pm 09:09 PM

Perbezaan utama antara CentOS dan Ubuntu adalah: asal (CentOS berasal dari Red Hat, untuk perusahaan; Ubuntu berasal dari Debian, untuk individu), pengurusan pakej (CentOS menggunakan yum, yang memberi tumpuan kepada kestabilan; Ubuntu menggunakan APT, untuk kekerapan yang tinggi) Pelbagai tutorial dan dokumen), kegunaan (CentOS berat sebelah ke arah pelayan, Ubuntu sesuai untuk pelayan dan desktop), perbezaan lain termasuk kesederhanaan pemasangan (CentOS adalah nipis)

Cara memasang centos Cara memasang centos Apr 14, 2025 pm 09:03 PM

Langkah Pemasangan CentOS: Muat turun Imej ISO dan Burn Bootable Media; boot dan pilih sumber pemasangan; Pilih susun atur bahasa dan papan kekunci; Konfigurasikan rangkaian; memisahkan cakera keras; Tetapkan jam sistem; Buat pengguna root; pilih pakej perisian; Mulakan pemasangan; Mulakan semula dan boot dari cakera keras selepas pemasangan selesai.

Pilihan Centos setelah menghentikan penyelenggaraan Pilihan Centos setelah menghentikan penyelenggaraan Apr 14, 2025 pm 08:51 PM

CentOS telah dihentikan, alternatif termasuk: 1. Rocky Linux (keserasian terbaik); 2. Almalinux (serasi dengan CentOS); 3. Ubuntu Server (Konfigurasi diperlukan); 4. Red Hat Enterprise Linux (versi komersial, lesen berbayar); 5. Oracle Linux (serasi dengan CentOS dan RHEL). Apabila berhijrah, pertimbangan adalah: keserasian, ketersediaan, sokongan, kos, dan sokongan komuniti.

Cara menggunakan desktop docker Cara menggunakan desktop docker Apr 15, 2025 am 11:45 AM

Bagaimana cara menggunakan desktop Docker? Docktop Docktop adalah alat untuk menjalankan bekas Docker pada mesin tempatan. Langkah -langkah untuk digunakan termasuk: 1. Pasang desktop Docker; 2. Mulakan desktop Docker; 3. Buat imej Docker (menggunakan Dockerfile); 4. Membina imej Docker (menggunakan Docker Build); 5. Jalankan bekas Docker (menggunakan Docker Run).

Penjelasan terperinci mengenai Prinsip Docker Penjelasan terperinci mengenai Prinsip Docker Apr 14, 2025 pm 11:57 PM

Docker menggunakan ciri -ciri kernel Linux untuk menyediakan persekitaran berjalan yang cekap dan terpencil. Prinsip kerjanya adalah seperti berikut: 1. Cermin digunakan sebagai templat baca sahaja, yang mengandungi semua yang anda perlukan untuk menjalankan aplikasi; 2. Sistem Fail Kesatuan (Unionfs) menyusun pelbagai sistem fail, hanya menyimpan perbezaan, menjimatkan ruang dan mempercepatkan; 3. Daemon menguruskan cermin dan bekas, dan pelanggan menggunakannya untuk interaksi; 4. Ruang nama dan cgroups melaksanakan pengasingan kontena dan batasan sumber; 5. Pelbagai mod rangkaian menyokong interkoneksi kontena. Hanya dengan memahami konsep -konsep teras ini, anda boleh menggunakan Docker dengan lebih baik.

Konfigurasi komputer apa yang diperlukan untuk vscode Konfigurasi komputer apa yang diperlukan untuk vscode Apr 15, 2025 pm 09:48 PM

Keperluan Sistem Kod Vs: Sistem Operasi: Windows 10 dan ke atas, MACOS 10.12 dan ke atas, pemproses pengedaran Linux: minimum 1.6 GHz, disyorkan 2.0 GHz dan ke atas memori: minimum 512 MB, disyorkan 4 GB dan ke atas ruang penyimpanan: minimum 250 mb, disyorkan 1 GB dan di atas keperluan lain:

Apa yang Harus Dilakukan Setelah CentOs Berhenti Penyelenggaraan Apa yang Harus Dilakukan Setelah CentOs Berhenti Penyelenggaraan Apr 14, 2025 pm 08:48 PM

Selepas CentOS dihentikan, pengguna boleh mengambil langkah -langkah berikut untuk menanganinya: Pilih pengedaran yang serasi: seperti Almalinux, Rocky Linux, dan CentOS Stream. Berhijrah ke pengagihan komersial: seperti Red Hat Enterprise Linux, Oracle Linux. Menaik taraf ke CentOS 9 Stream: Pengagihan Rolling, menyediakan teknologi terkini. Pilih pengagihan Linux yang lain: seperti Ubuntu, Debian. Menilai pilihan lain seperti bekas, mesin maya, atau platform awan.

Apa yang perlu dilakukan sekiranya imej docker gagal Apa yang perlu dilakukan sekiranya imej docker gagal Apr 15, 2025 am 11:21 AM

Langkah Penyelesaian Masalah untuk Gagal Docker Image Build: Semak Sintaks Dockerfile dan Versi Ketergantungan. Semak jika konteks binaan mengandungi kod sumber dan kebergantungan yang diperlukan. Lihat log binaan untuk butiran ralat. Gunakan pilihan sasaran untuk membina fasa hierarki untuk mengenal pasti titik kegagalan. Pastikan anda menggunakan versi terkini Enjin Docker. Bina imej dengan --t [nama imej]: mod debug untuk debug masalah. Semak ruang cakera dan pastikan ia mencukupi. Lumpuhkan Selinux untuk mengelakkan gangguan dengan proses binaan. Tanya platform komuniti untuk mendapatkan bantuan, sediakan dockerfiles dan bina deskripsi log untuk cadangan yang lebih spesifik.

See all articles