Disebabkan minat saya terhadap sistem pengendalian Linux dan keinginan saya untuk pengetahuan peringkat rendah, saya menyusun artikel ini. Ia berfungsi sebagai semakan untuk pengetahuan asas dan merangkumi semua aspek sistem. Alat dalam dokumentasi tidak boleh dikuasai sepenuhnya tanpa pengetahuan lengkap tentang sistem komputer, rangkaian dan sistem pengendalian. Selain itu, analisis dan pengoptimuman prestasi sistem ialah siri jangka panjang.
Dokumen ini terutamanya artikel komprehensif yang disusun daripada catatan blog alat penalaan prestasi Linux yang dikemas kini oleh guru Linux dan arkitek prestasi kanan Netflix Brendan Gregg, dan mengumpul artikel yang berkaitan dengan pengoptimuman prestasi sistem Linux. Ia menerangkan terutamanya prinsip dan alat ujian prestasi yang terlibat bersama dengan catatan blog.
Pengetahuan latar belakang: Apabila menganalisis masalah prestasi, memahami pengetahuan latar belakang adalah perlu. Sebagai contoh, cache perkakasan contoh lain ialah kernel sistem pengendalian. Butiran gelagat aplikasi sering dikaitkan dengan perkara ini dan perkara peringkat rendah ini boleh menjejaskan prestasi aplikasi dengan cara yang tidak dijangka. Sebagai contoh, sesetengah program gagal menggunakan cache sepenuhnya, mengakibatkan prestasi yang lemah. Sebagai contoh, terlalu banyak panggilan sistem dipanggil secara tidak perlu, menyebabkan penukaran kernel/pengguna yang kerap, dsb.
Pertama, mari lihat gambar:
Gambar di atas adalah analisis prestasi yang dikongsikan oleh Brendan Gregg Semua alatan di sini boleh mendapatkan dokumen bantuan mereka melalui man
Berikut adalah pengenalan ringkas kepada penggunaan umum:
vmstat (VirtualMeomoryStatistics, statistik memori maya) ialah alat biasa untuk memantau memori dalam Linux Ia boleh memantau keadaan keseluruhan memori maya sistem pengendalian, proses, CPU, dll. Penggunaan biasa vmstat: vmstat interval times
即每隔 interval
秒采样一次,共采样 times
次,如果省略 times
, data akan dikumpul sehingga pengguna menghentikannya secara manual. Hanya berikan contoh mudah:
Anda boleh menggunakan ctrl+c
停止 vmstat
untuk mengumpul data.
Baris pertama menunjukkan purata sistem sejak ia dimulakan, baris kedua mula menunjukkan apa yang berlaku sekarang, baris berikut akan menunjukkan apa yang berlaku dalam setiap selang 5 saat, maksud setiap lajur adalah dalam pengepala, seperti ditunjukkan di bawah:
Simptom memori tidak mencukupi: memori bebas berkurangan dengan mendadak, penimbal dan cache kitar semula tidak membantu, penggunaan meluas partition swap (swpd), pertukaran halaman yang kerap (swap), peningkatan dalam bilangan cakera baca dan tulis (io), dan peningkatan gangguan gangguan halaman (dalam) , bilangan suis konteks (cs) meningkat, bilangan proses menunggu IO (b) meningkat, dan banyak masa CPU dihabiskan untuk menunggu IO (wa)
iostat digunakan untuk melaporkan statistik unit pemprosesan pusat (CPU) dan statistik input/output untuk keseluruhan sistem, penyesuai, peranti tty, cakera dan CD-ROM Secara lalai, ia memaparkan maklumat penggunaan cpu yang sama seperti vmstat arahan untuk memaparkan sambungan Statistik Peranti:
Barisan pertama menunjukkan purata sejak but sistem, kemudian purata tambahan, satu baris bagi setiap peranti.
Tabiat singkatan penunjuk IO cakera Linux biasa: rq ialah permintaan, r dibaca, w ialah tulis, qu ialah baris gilir, sz ialah saiz, a ialah purata, tm ialah masa dan svc ialah perkhidmatan.
dstat menunjukkan penggunaan CPU, status IO cakera, status penghantaran paket rangkaian dan status paging Outputnya berwarna-warni dan sangat mudah dibaca Berbanding dengan input vmstat dan iostat, ia lebih terperinci dan intuitif. Apabila menggunakannya, hanya masukkan arahan secara langsung, dan sudah tentu anda juga boleh menggunakan parameter tertentu.
Seperti berikut:dstat –cdlmnpsy
Arahan iotop ialah arahan yang direka khusus untuk memaparkan IO cakera keras Gaya antara muka adalah serupa dengan arahan atas Ia boleh memaparkan proses yang menjana beban IO secara khusus. Ia adalah alat teratas yang digunakan untuk memantau penggunaan I/O cakera Ia mempunyai UI yang serupa dengan bahagian atas, termasuk PID, pengguna, I/O, proses dan maklumat lain yang berkaitan.
Boleh digunakan secara tidak interaktif:
iotop –bod interval
Untuk melihat I/O
setiap proses, anda boleh menggunakan
pidstat,pidstat –d instat
pidstat digunakan terutamanya untuk memantau penggunaan sumber sistem oleh semua atau proses tertentu, seperti CPU, memori, peranti IO, penukaran tugas, benang, dsb.
使用方法:
pidstat –d interval
pidstat 还可以用以统计CPU使用信息:
pidstat –u interval
统计内存信息:
pidstat –r interval
任务区域默认显示:进程 ID,有效用户,进程优先级,NICE 值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU 占用率,内存占用率,累计 CPU 时间,进程命令行信息。
htop 是 Linux 系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台或者X终端中),需要 ncurses。
Htop 可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
与 top 相比,htop 有以下优点:
mpstat 是 Multiprocessor Statistics的缩写,是实时系统监控工具。其报告CPU的一些统计信息,这些信息存放在 /proc/stat
文件中。在多 CPUs 系统里,其不但能查看所有 CPU 的平均状况信息,而且能够查看特定 CPU 的信息。常见用法:
mpstat –P ALL interval times
netstat 用于显示与 IP、TCP、UDP和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
常见用法:
netstat –npl # 可以查看你要打开的端口是否已经打开。 netstat –rn # 打印路由表信息。 netstat –in # 提供系统上的接口信息,打印每个接口的MTU,输入分组数,输入错误,输出分组数,输出错误,冲突以及当前的输出队列的长度。
ps 参数太多,具体使用方法可以参考 man ps
常用的方法:
ps aux #hsserver ps –ef |grep #hundsun
杀掉某一程序的方法:
ps aux | grep mysqld | grep –v grep | awk ‘{print $2 }’ xargs kill -9
杀掉僵尸进程:
ps –eal | awk ‘{if ($2 == “Z”){print $4}}’ | xargs kill -9
跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况。
举例:查看 mysqld 在 linux 上加载哪种配置文件,可以通过运行下面的命令:
strace –e stat64 mysqld –print –defaults > /dev/null
能够打印系统总共运行了多长时间和系统的平均负载,uptime 命令最后输出的三个数字的含义分别是 1分钟,5分钟,15分钟内系统的平均负荷。
lsof(list open files)是一个列出当前系统打开文件的工具。通过 lsof 工具能够查看这个列表对系统检测及排错,常见的用法:
查看文件系统阻塞
lsof /boot
查看端口号被哪个进程占用
lsof -i : 3306
查看用户打开哪些文件
lsof –u username
查看进程打开哪些文件
lsof –p 4838
查看远程已打开的网络链接
lsof –i @192.168.34.128
perf 是 Linux kernel 自带的系统性能优化工具。优势在于与 Linux Kernel 的紧密结合,它可以最先应用到加入 Kernel 的new feature,用于查看热点函数,查看 cashe miss 的比率,从而帮助开发者来优化程序性能。
性能调优工具如 perf,Oprofile 等的基本原理都是对被监测对象进行采样,最简单的情形是根据 tick 中断进行采样,即在 tick 中断内触发采样点,在采样点里判断程序当时的上下文。
假如一个程序 90% 的时间都花费在函数 foo() 上,那么 90% 的采样点都应该落在函数 foo() 的上下文中。运气不可捉摸,但我想只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过 tick 触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。
结合以上常用的性能测试命令并联系文初的性能分析工具的图,就可以初步了解到性能分析过程中哪个方面的性能使用哪方面的工具(命令)。
熟练并精通了第二部分的性能分析命令工具,引入几个性能测试的工具,介绍之前先简单了解几个性能测试工具:
github.com/brendangregg/flamegraph
中的开发源代码的程序生成。是一款性能测评工具,对于不同模块的性能测试可以使用相应的工具,想要深入了解,可以参考最下文的附件文档。
是一款性能调优工具,主要是从linux内核源码层进行的调优,想要深入了解,可以参考下文附件文档。
sar(System Activity Reporter系统活动情况报告)是目前LINUX上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC 有关的活动等方面。sar 的常规使用方式:
sar [options] [-A] [-o file] t [n]
其中:t 为采样间隔,n 为采样次数,默认值是1;-o file 表示将命令结果以二进制格式存放在文件中,file 是文件名。options 为命令行选项
Atas ialah kandungan terperinci Ringkasan alat analisis prestasi Linux. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!