CPU性能指标

CPU使用率

用户CPU使用率, 包括用户态(user)和低优先级用户态(nice). 该指标过高说明应用程序比较繁忙.

系统CPU使用率, CPU在内核态运行的时间百分比(不含中断). 该指标高说明内核比较繁忙.

等待I/O的CPU使用率, iowait, 该指标高说明系统与硬件设备I/O交互时间比较长.

软/硬中断CPU使用率, 该指标高说明系统中发生大量中断.

steal CPU / guest CPU, 表示虚拟机占用的CPU百分比.

平均负载

理想情况下平均负载等于逻辑CPU个数,表示每个CPU都被充分利用. 若大于则说明系统负载较重.

平均负载:单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数。它和我们传统意义上理解的CPU使用率并没有直接关系。
其中不可中断进程是正处于内核态关键流程中的进程(如常见的等待设备的I/O响应)。不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
平均负载多少时合理
实际生产环境中将系统的平均负载监控起来,根据历史数据判断负载的变化趋势。当负载存在明显升高趋势时,及时进行分析和调查。当然也可以当设置阈值(如当平均负载高于CPU数量的70%时)
现实工作中我们会经常混淆平均负载和CPU使用率的概念,其实两者并不完全对等:CPU 密集型进程,大量 CPU 使用会导致平均负载升高,此时两者一致I/O 密集型进程,等待 I/O 也会导致平均负载升高,此时 CPU 使用率并不一定高大量等待 CPU 的进程调度会导致平均负载升高,此时 CPU 使用率也会比较高
平均负载高时可能是 CPU 密集型进程导致,也可能是 I/O 繁忙导致。具体分析时可以结合 mpstat/pidstat 工具辅助分析负载来源。

上下文切换

​ CPU 上下文切换,就是把前一个任务的 CPU 上下文(CPU 寄存器和 PC)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的位置,运行新任务。其中,保存下来的上下文会存储在系统内核中,待任务重新调度执行时再加载,保证原来的任务状态不受影响。

CPU 上下文切换分为:

  • 进程上下文切换
  • 线程上下文切换
  • 中断上下文切换

进程上下文切换

​ 进程是由内核管理和调度的,进程上下文切换只能发生在内核态。因此相比系统调用来说,在保存当前进程的内核状态和CPU寄存器之前,需要先把该进程的虚拟内存,栈保存下来。再加载新进程的内核态后,还要刷新进程的虚拟内存和用户栈。

​ 进程只有在调度到CPU上运行时才需要切换上下文,有以下几种场景:CPU时间片轮流分配,系统资源不足导致进程挂起,进程通过sleep函数主动挂起,高优先级进程抢占时间片,硬件中断时CPU上的进程被挂起转而执行内核中的中断服务。

线程上下文切换

线程上下文切换分为两种:

  • 前后线程同属于一个进程,切换时虚拟内存资源不变,只需要切换线程的私有数据,寄存器等;
  • 前后线程属于不同进程,与进程上下文切换相同。

同进程的线程切换消耗资源较少,这也是多线程的优势。

中断上下文切换

中断上下文切换并不涉及到进程的用户态,因此中断上下文只包括内核态中断服务程序执行所必须的状态(CPU寄存器,内核堆栈,硬件中断参数等)。

中断处理优先级比进程高,所以中断上下文切换和进程上下文切换不会同时发生

CPU缓存命中率

CPU缓存的复用情况,命中率越高性能越好. 其中L1/L2常用在单核,L3则用在多核中

性能工具

平均负载案例先用uptime查看系统平均负载判断负载在升高后再用mpstat和pidstat分别查看每个CPU和每个进程CPU使用情况.找出导致平均负载较高的进程.上下文切换案例先用vmstat查看系统上下文切换和中断次数再用pidstat观察进程的自愿和非自愿上下文切换情况最后通过pidstat观察线程的上下文切换情况进程CPU使用率高案例先用top查看系统和进程的CPU使用情况,定位到进程再用perf top观察进程调用链,定位到具体函数系统CPU使用率高案例先用top查看系统和进程的CPU使用情况,top/pidstat都无法找到CPU使用率高的进程重新审视top输出从CPU使用率不高,但是处于Running状态的进程入手perf record/report发现短时进程导致 (execsnoop工具)不可中断和僵尸进程案例先用top观察iowait升高,发现大量不可中断和僵尸进程strace无法跟踪进程系统调用perf分析调用链发现根源来自磁盘直接I/O软中断案例top观察系统软中断CPU使用率高查看/proc/softirqs找到变化速率较快的几种软中断sar命令发现是网络小包问题tcpdump找出网络帧的类型和来源,确定SYN FLOOD攻击导致

根据指标找工具(cpu性能)

性能指标 工具 说明
平均负载 uptime
top
uptime最简单;
top提供更全面指标
系统整体CPU使用率 vmstat
mpstat
top
sar
top、vmstat、mpstat:只能动态查看
sar:可以记录历史数据
进程CPU使用率 top
pidstat
ps
htop
atop
top、ps:按CPU使用率排序
pidstat:只显示实际使用CPU的进程
htop、atop:以不同颜色显示
系统上下文切换 vmstat 查看上下文切换 查看运行状态 查看不可中后段进程数量
进程上下文切换 pidstat pidstat -w: 自愿上下文切换 非自愿上下文切换
软中断 top
mpstat
/proc/softirqs
top:软中断CPU使用率
mpstat和/proc/softirqs:提供各个软中断在每个CPU的运行次数
硬中断 vmstat
/proc/interrupts
vmstat提供总的中断次数 /proc/interrupts提供各种中断在CPU上运行的累积次数
网络 dstat
sar
tcpdump
dstat、sar:提供总的网络接收和发送情况
tcpdump:动态抓取正在进行的网络通讯
I/O dstat
sar
都提供I/O的整体情况
CPU lscpu
/proc/cpuinfo
lscpu更直观
事件剖析 perf
execsnoop
perf:分析CPU的缓存以及内核调用链
execsnoop:监控短时进程

一:top命令

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

语法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
参数说明:
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

实例

[mi@app ~]$ top
top - 14:30:35 up 124 days,  2:58,  2 users,  load average: 0.16, 0.07, 0.08
Tasks: 214 total,   1 running, 212 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.5 us,  0.4 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.1 st
KiB Mem : 32945484 total,  1922560 free, 15182068 used, 15840856 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 17345600 avail MemPID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND1949 migu      20   0 8584668   2.1g  14104 S   2.3  6.6 118:06.68 java
20531 migu      20   0 8512308   2.4g  13892 S   1.3  7.7  26:43.37 java
23440 migu      20   0 7196668   1.1g   7688 S   1.0  3.3 814:26.26 java
31040 migu      20   0  108548   1292    728 S   1.0  0.0   1:48.01 pidstat1942 migu      20   0 8275420   1.3g  15028 S   0.7  4.0  69:23.56 java

含义

前5行为系统总体资源统计情况

top - 系统当前时间
up 系统已开机多长时间
users 当前用户数
load average cpu平均负载,三个数值分别为,1分钟,5分钟,15分钟
Tasks 系统当前进程数,
total:总进程数,
running:正在运行的进程数,
sleeping:睡眠的进程数,
stopped:停止的进程数,
zombie:僵尸进程数
%Cpu(s) cpu使用率
us:用户使用cpu百分百,
sy:系统内核使用cpu百分百,
ni 用户进程空间内改变过优先级的进程占用CPU百分比
id:空闲的cpu百分比
wa 等待输入输出的CPU时间百分比
hi 硬中断(Hardware IRQ)占用CPU的百分比
si 软中断(Software Interrupts)占用CPU的百分比
st 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间
Mem 内存使用信息,
total:总内存大小,
free:空闲的内存,
used:已使用的内存,
buff/cache:缓存的内存大小
Swap 虚拟内存信息
PID 进程id
USER 进程所有者
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量
RES 进程使用的物理内存大小
SHR 共享内存大小
S 进程状态,D:不可中断的睡眠状态,R:运行,S:睡眠,T:跟踪/停止,Z:僵尸进程
%CPU 进程使用的CPU占用百分比
%MEM 进程使用的物理内存百分比
TIME 进程使用的CPU时间总计
COMMAND 命令名

二:vmstat命令

vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

语法

[root@localhost ~]# vmstat [-a] [刷新延时 刷新次数]
[root@localhost ~]# vmstat [选项]

vmstat命令常用选项及含义

选项 含义
-fs -f:显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的。
-s:将从启动到目前为止,由一些事件导致的内存变化情况列表说明。
-S -S : 单位. 令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。
-d -d: 列出硬盘有关读写总量的统计表。
-p -p: 分区设备文件名.查看硬盘分区的读写情况。

实例

[mi@app ~]$ vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st2  0      0 2067240 155952 15568772    0    0     0     9    0    0  0  0 99  0  01  0      0 2065044 155952 15568772    0    0     0   112 3736 5584  2  1 97  0  00  0      0 2067176 155952 15568772    0    0     0   108 3941 5805  1  1 98  0  00  0      0 2067092 155952 15568780    0    0     0     0 3147 5378  0  0 99  0  00  0      0 2066596 155952 15568780    0    0     0     0 3260 5420  0  0 99  0  00  0      0 2066480 155952 15568972    0    0     0     0 5358 7234  2  1 98  0  0

含义

字段 含义
procs 进程信息字段:
-r:等待运行的进程数,数量越大,系统越繁忙。
-b:不可被唤醒的进程数量,数量越大,系统越繁忙。
memory 内存信息字段:
-swpd:虚拟内存的使用情况,单位为 KB。
-free:空闲的内存容量,单位为 KB。
-buff:缓冲的内存容量,单位为 KB。
-cache:缓存的内存容量,单位为 KB。
swap 交换分区信息字段:
-si:从磁盘中交换到内存中数据的数量,单位为 KB。
-so:从内存中交换到磁盘中数据的数量,单位为 KB。
这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差
io 磁盘读/写信息字段:
-bi:从块设备中读入的数据的总量,单位是块。
-bo:写到块设备的数据的总量,单位是块。
这两个数越大,代表系统的 I/O 越繁忙。
system 系统信息字段:
-in:每秒被中断的进程次数。
-cs:每秒进行的事件切换次数。
这两个数越大,代表系统与接口设备的通信越繁忙。
cpu CPU信息字段:
-us:非内核进程消耗 CPU 运算时间的百分比。
-sy:内核进程消耗 CPU 运算时间的百分比。
-id:空闲 CPU 的百分比。
-wa:等待 I/O 所消耗的 CPU 百分比。
-st:被虚拟机所盗用的 CPU 百分比。

三:pidstat

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况。

pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

安装

pidstat 是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,它能够从大多数linux发行版的软件源中获得。

yum install sysstat

语法

pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
常用的参数:-u:默认的参数,显示各个进程的cpu使用统计
-r:显示各个进程的内存使用统计
-d:显示各个进程的IO使用情况
-p:指定进程号
-w:显示每个进程的上下文切换情况
-t:显示选择任务的线程的统计信息外的额外信息
-T { TASK | CHILD | ALL }
这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
-V:版本号
-h:在一行上显示了所有活动,这样其他程序可以容易解析。
-I:在SMP环境,表示任务的CPU使用率/内核数量
-l:显示命令名和所有参数

实例

(一)查看进程的cpu上下文切换

vmstat只能查看总的cpu上下文切换,pidstat可以查看每个进程的上下文切换

语法
[migu@app-hbbjhbqomclb01amg ~]$ pidstat -w 1
Linux 3.10.0-1160.25.1.el7.x86_64 (app-hbbjhbqomclb01amg)       11/29/2022      _x86_64_        (8 CPU)11:15:17 AM   UID       PID   cswch/s nvcswch/s  Command
11:15:18 AM     0         1      0.99      0.00  systemd
11:15:18 AM     0         6      0.99      0.00  ksoftirqd/0
11:15:18 AM     0         9    121.78      0.00  rcu_sched
11:15:18 AM     0        11      0.99      0.00  watchdog/0
11:15:18 AM     0        12      0.99      0.00  watchdog/1
11:15:18 AM     0        13      0.99      0.00  migration/1
11:15:18 AM     0        17      0.99      0.00  watchdog/2
11:15:18 AM     0        19      0.99      0.00  ksoftirqd/2
11:15:18 AM     0        22      0.99      0.00  watchdog/3
11:15:18 AM     0        27      0.99      0.00  watchdog/4
含义
cswch/s 表示每秒自愿上下文切换(voluntary context switches)的次数
ncswch/s 表示每秒非自愿上下文切换(non voluntary context switches)的次数
  • 自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。
  • 而非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。

(二)查看进程的cpu使用率

语法
[mi@app ~]$ pidstat -u 5
Linux 3.10.0-1160.25.1.el7.x86_64 (app-hbbjhbqomclb01amg)       11/29/2022      _x86_64_        (8 CPU)
03:15:06 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
03:15:11 PM     0         9    0.00    0.20    0.00    0.20     7  rcu_sched
03:15:11 PM     0       434    1.00    1.20    0.00    2.20     3  systemd-journal
03:15:11 PM  1000       492    0.00    0.20    0.00    0.20     5  mgweb
03:15:11 PM  1000       493    0.00    0.20    0.00    0.20     4  mgweb
03:15:11 PM     0      1331    0.40    0.20    0.00    0.60     2  rsyslogd
03:15:11 PM  1000      1850    4.79    0.20    0.00    4.99     3  python3
03:15:11 PM  1000      1930    0.20    0.00    0.00    0.20     6  java
03:15:11 PM  1000      1942    1.00    0.40    0.00    1.40     0  java
03:15:11 PM  1000      1949    1.00    0.40    0.00    1.40     5  java
03:15:11 PM  1000      1955    0.40    0.00    0.00    0.40     7  java
03:15:11 PM  1000      3795    1.20    0.00    0.00    1.20     7  java
03:15:11 PM     0      4917    0.20    0.00    0.00    0.20     4  titan_monitor
03:15:11 PM  1000      8865    0.00    0.20    0.00    0.20     6  pidstat
03:15:11 PM  1000     20531    0.80    0.60    0.00    1.40     6  java
03:15:11 PM  1000     22578    0.20    0.00    0.00    0.20     0  redis-server
03:15:11 PM  1000     23440    0.20    0.40    0.00    0.60     7  java
含义

每隔 5 秒输出 1 组数据

%usr 用户空间的cpu使用率
%system 内核空间的cpu使用率
%wait 等待上下文切换的cpu使用率
%CPU 总的cpu使用率

# -d 展示 I/O 统计数据,-p 指定进程号,间隔 1 秒输出 3 组数据
$ pidstat -d -p 4344 1 3
06:38:50      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
06:38:51        0      4344      0.00      0.00      0.00       0  app
06:38:52        0      4344      0.00      0.00      0.00       0  app
06:38:53        0      4344      0.00      0.00      0.00       0  app
kB_rd/s:表示每秒读的 KB 数kB_wr/s: 表示每秒写的 KB 数iodelay: 表示 I/O 的延迟(单位是时钟周期)

四、mpstat

mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标

安装

它是Linux性能工具集sysstat中的一个工具.(和pidstat一样)

yum install sysstat

语法

mpstat [-P {cpu|ALL}] [interval [count]]
参数 描述
-P {cpu|ALL} 表示监控哪个CPU,ALL是所有
internval 相邻两次采样的间隔时间
count 采样的次数,count只能和internval一起使用

实例

查看多核CPU核心的当前运行状况信息, 每2秒更新一次

[mi@app ~]$ mpstat -P ALL 2
Linux 3.10.0-1160.25.1.el7.x86_64 (app-hbbjhbqomclb01amg)       11/30/2022      _x86_64_        (8 CPU)10:15:57 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10:15:59 AM  all    0.44    0.00    0.31    0.00    0.00    0.00    0.12    0.00    0.00   99.12
10:15:59 AM    0    0.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.00
10:15:59 AM    1    0.50    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.00
10:15:59 AM    2    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50
10:15:59 AM    3    0.50    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00   99.50
10:15:59 AM    4    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10:15:59 AM    5    1.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   98.51
10:15:59 AM    6    0.50    0.00    0.00    0.00    0.00    0.00    0.50    0.00    0.00   99.00
10:15:59 AM    7    0.00    0.00    0.50    0.00    0.00    0.00    0.99    0.00    0.00   98.51

linux性能(一):cpu性能指标及工具相关推荐

  1. Linux性能优化-CPU性能优化思路

    目录 CPU性能指标 性能工具 如何迅速的分析CPU性能瓶颈 性能优化方法论 CPU优化 参考 CPU性能指标 CPU使用率 1.CPU使用率描述了非空闲时间占总CPU时间的百分比,根据CPU上运行任 ...

  2. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(一) 平均负载、上下文切换、CPU 使用率

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(一) 平均负载.上下文切换.CPU 使用率 [1]相关概念 [1.1]平均负载 平均负载是指单位时间内,系统处于可运行状态和不可 ...

  3. linux性能优化--cpu篇

    linux性能优化--cpu篇 前言 负载 CPU使用率 proc perf 一些链接 `perf list` 比较有用的event `perf stat` `perf record` Profili ...

  4. linux性能监控工具perf,Linux性能分析中常用的工具perf介绍

    今天小编要跟大家分享的文章是关于Linux性能分析中常用的工具perf介绍.系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化.性能剖析的目标是寻找性能瓶 ...

  5. 【Linux 性能优化系列】Linux 性能优化 -- CPU 性能篇(三) Linux 软中断

    [Linux 性能优化系列]Linux 性能优化 -- CPU 性能篇(三) Linux 软中断 [1]相关概念 [1.1]中断 中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力:为了减少 ...

  6. 显示器 Linux 性能 18 (一个命令行工具传递)

    对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并执行是多么的不easy.基于此原因. ...

  7. linux运行16668端口,Linux 性能监控之命令行工具

    引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...

  8. Linux性能之CPU使用率

    转载:http://www.360doc.com/content/22/0708/08/11213896_1039036008.shtml CPU使用率 Linux 通过 /proc 虚拟文件系统,向 ...

  9. Linux性能分析—CPU篇

    说到性能分析,基本上就是 CPU.内存.磁盘 IO 以及网络这几个部分,本文先来看 CPU 这个部分. 一.CPU 基础信息 进行性能分析之前,首先得知道 CPU 有哪些信息,使用lscpu命令查看 ...

最新文章

  1. 新浪微博应用 IE下面框架嵌套框架的问题解决
  2. centos架设lamp环境 php+mysql+httpd+vsftp
  3. 机器学习算法之K-近邻算法
  4. docker nodejs 基本应用
  5. 使用ReaderWriterLock优化文件缓存
  6. 【vue】ios中从详情页中返回到列表页出现空白的问题
  7. 手动加支付宝遇到的错误--iOS
  8. 如何掌握C#的核心技术
  9. MATLAB递归程序的调试方法
  10. 基础知识—循环语句-for
  11. 编辑中的word变成只读_文档设定密级,word中是这样加密,看一篇就精通了
  12. 利用sklearn对红酒数据集分类
  13. 两块stm32仿真protues串口通信程序
  14. 【软件需求工程】北理的恶龙们——软件需求规格说明
  15. 从零开始搭建免费小程序商城
  16. QT 使用 QTcpSocket来检测 ip 设备的网络状态
  17. linux 查看java进城_linux查看java进程|线程池信息
  18. 经典升级,长直播,马上开课 | 第 19 期高级转录组分析和R数据可视化火热报名中!!!...
  19. 起名算法 php,取名测试打分
  20. 放弃谷歌实习转投ICC,我是如何曲线上岸G家的?

热门文章

  1. Redis对于key的操作命令(附PHP代码)
  2. 转自http://www.eaw.com.cn/news/display/article/10303有5402方面的文章 (对本人学习C有帮助!)
  3. 【J2EE浅析】——RMI
  4. 仍在设置此设备的类配置(代码56)
  5. Excel公式系列: 单元格中字符是否包含某个特定值IF、ISERROR、FIND
  6. 给想当领导的员工(三)——执行力与领导力
  7. 数据科学猫:机器学习建模流程
  8. 套接字缓存区sk_buff
  9. 等级链与跳板原则_管理学原理重点
  10. IntelliJ IDEA 设置字体背景