一、性能分析工具简介

Brendan Gregg是算机性能设计、分析和调优专家,编写开源大量性能测试工具。
http://www.brendangregg.com

1、性能分析工具

Linux性能优化(五)——性能监控工具

2、性能观测工具

Linux性能优化(五)——性能监控工具
Linux性能优化(五)——性能监控工具

3、性能测评工具

Linux性能优化(五)——性能监控工具

4、性能调优工具

Linux性能优化(五)——性能监控工具

二、常用工具

1、free

free指令会显示内存的使用情况,包括实体内存、虚拟的交换文件内存、共享内存区段以及系统核心使用的缓冲区等。
free [-bkmotV][-s <间隔秒数>]
-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。
free -h

total:表示计物理内存的大小,used+free+buff/cache。
used:表示已使用多少。
free:表示可用内存多少。
Shared:表示多个进程共享的内存总额。
buffer/cache:表示磁盘缓存的大小。buffer cache比较小,即缓存经常访问块设备的元数据;cache比较大,page cache,即缓存文件内容+slab。
available: 剩余可用内存。

2、top

top命令的汇总区域显示了五个方面的系统性能信息:
(1)负载:时间,登陆用户数,系统平均负载;
(2)进程:运行,睡眠,停止,僵尸;
(3)CPU:用户态,核心态,NICE,空闲,等待IO,中断等;
(4)内存:总量,已用,空闲(系统角度),缓冲,缓存;
(5)交换分区:总量,已用,空闲;
任务区域默认显示:进程ID,有效用户,进程优先级,NICE值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU占用率,内存占用率,累计CPU时间,进程命令行信息。
Linux性能优化(五)——性能监控工具

3、ps

ps命令是Process Status缩写,用来查看系统中当前运行的进程。
a:显示所有进程
-a:显示同一终端下的所有程序
-A:显示所有进程
c:显示进程的真实名称
-N:反向选择
-e:等于“-A”
e:显示环境变量
f:显示程序间的关系
-H:显示树状结构
r:显示当前终端的进程
T:显示当前终端的所有程序
u:指定用户的所有进程
ps  aux | grep mysqld | grep –v grep | awk ‘{print $2 }’ xargs kill -9
杀掉应用程序
ps –eal | awk ‘{if ($2 == “Z”){print $4}}’ | xargs kill -9
杀掉僵尸进程
ps -ef
显示所有进程,包括命令行
ps aux
列出目前正在内存当中的程序
ps -u username
查看特定用户的进程
ps -aux --sort -pcpu | less
根据CPU使用升序排序
ps -aux --sort -pmem | less
根据内存使用升序排序
ps -L pid
查看指定进程的线程
ps -axjf
树形结构显示进程
ps -eo pid,user,args
查看登录服务器的进程
watch -n 1 'ps -aux --sort -pmem,-pcpu'
实时监控进程状态

4、strace

strace常用来跟踪进程执行时的系统调用和所接收的信号。在Linux中,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数、返回值、执行消耗的时间。
strace -c[df] [-In] [-bexecve] [-eexpr]... [-Ooverhead] [-Ssortby] -ppid... / [-D] [-Evar[=val]]... [-uusername] command [args]
-c:统计每一系统调用的所执行的时间、次数和出错的次数等。
-d:输出strace关于标准错误的调试信息
-f:跟踪由fork调用所产生的子进程
-ff:如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号。
-F:尝试跟踪vfork调用,-f时vfork不被跟踪。
-h:输出简要的帮助信息。
-i:输出系统调用的入口指针。
-q:禁止输出关于脱离的消息。
-r:打印出相对时间关于,,每一个系统调用.
-t:在输出中每一行前加上时间信息。
-tt:在输出中的每一行前加上时间信息,微秒级。
-ttt:微秒级输出,以秒显示时间。
-T:显示每一调用所耗的时间,以秒为单位。
-v:输出所有的系统调用。
-V:输出strace的版本信息。
-x:以十六进制形式输出非标准字符串
-xx:所有字符串以十六进制形式输出.
-a column:设置返回值的输出位置,默认为40。
-e expr:指定一个表达式,用来控制如何跟踪。格式如下:
[qualifier=][!]value1[,value2]...
qualifier可选值为trace、abbrev、verbose、raw、signal、read、write,value是用来限定的符号或数字,默认qualifier是 trace,感叹号是否定符号,例如:
-eopen等价于-e trace=open,表示只跟踪open调用,而-etrace!=open表示跟踪除open外的其它调用。
-e trace=open,close,rean,write表示只跟踪四个系统调用,默认set=all。
-e trace=file 只跟踪有关文件操作的系统调用。
-e trace=process只跟踪有关进程控制的系统调用。
-e trace=network跟踪与网络有关的所有系统调用。
-e strace=signal跟踪所有与系统信号有关的系统调用。
-e trace=ipc跟踪所有与进程通讯有关的系统调用。
-e abbrev=set设定strace输出的系统调用的结果集。
-e raw=set将指定的系统调用的参数以十六进制显示。
-e signal=set指定跟踪的系统信号,默认为all,如 signal=!SIGIO表示不跟踪SIGIO信号。
-e read=set输出从指定文件中读出数据。
-o filename:将strace的输出写入文件filename。
-p pid:跟踪指定的进程pid。
-s strsize:指定输出的字符串的最大长度,默认为32,文件名一直全部输出.
-u username:以username 的UID和GID执行被跟踪的命令
strace -p pid
追踪已经存在的进程
Linux性能优化(五)——性能监控工具
strace command args
追踪应用启动过程

5、df

 df(disk free)命令用于显示Linux系统上的文件系统磁盘使用情况统计。
df [选项]... [FILE]...
-a, --all:包含所有文件系统
--block-size={SIZE}:使用SIZE大小的Blocks
-h, --human-readable:可读格式
-H, --si:1000为单位显示
-i, --inodes:列出 inode 资讯,不列出已使用 block
-k, --kilobytes:--block-size=1024
-l, --local:限制列出的文件结构
-m, --megabytes:--block-size=1048576
--no-sync:显示信息前不sync,默认设置
-P, --portability:使用POSIX输出格式
--sync:先sync再显示信息
-t, --type=TYPE:限制列出文件系统的TYPE
-T, --print-type:显示文件系统的形式
-x, --exclude-type=TYPE:限制列出文件系统不要显示TYPE
--help:打印帮助信息
--version:打印版本

6、du

du(disk usage)命令用于显示目录或文件所占用的磁盘空间。
du [-abcDhHklmsSx][-X文件][--block-size][--exclude=目录或文件][--max-depth=目录层数][--help][--version][目录或文件] [-L 链接符号]
-a或-all:显示目录和文件的大小。
-b或-bytes:显示目录或文件大小时,以byte为单位。
-c或--total:显示目录或文件的大小以及大小总和。
-D或--dereference-args:显示指定符号链接的源文件大小。
-h或--human-readable:以K,M,G为单位,提高信息的可读性。
-H或--si:K,M,G是以1000为换算单位。
-k或--kilobytes:以1024 bytes为单位。
-l或--count-links:重复计算硬件连接的文件。
-L<符号连接>或--dereference<符号连接>:显示选项中所指定符号连接的源文件大小。
-m或--megabytes:以1MB为单位。
-s或--summarize:仅显示总计。
-S或--separate-dirs:显示目录的大小时,不含其子目录的大小。
-x或--one-file-xystem:以开始处理时的文件系统为准,若遇上其它文件系统目录则略过。
-X<文件>或--exclude-from=<文件>:在<文件>指定目录或文件。
--exclude=<目录或文件>:略过指定的目录或文件。
--max-depth=<目录层数>:超过指定层数的目录后,予以忽略。
--help:显示帮助。
--version:显示版本信息。

三、dstat

1、dstat简介

dstat是一个全能系统信息统计工具,提供vmstat、iostat、netstat、nfsstat、ifstat等命令工具类似功能。dstat拥有彩色界面并支持即时刷新。
Linux性能优化(五)——性能监控工具
dstat提供的下列状态的性能监控:
(1)CPU状态:CPU使用率,显示用户、内核、空闲、等待、硬中断、软中断。
(2)磁盘统计:磁盘读写,显示磁盘的读、写总数。
(3)网络统计:网络设备发送和接收的数据,显示的网络收、发数据总数。
(4)分页统计:系统的分页活动。显示in(换入)和out(换出)。
(5)系统统计:显示中断(int)和上下文切换(csw)。
dstat安装:
yum install dstat

2、dstat命令格式

dstat [-afv] [options..] [delay [count]]
-c, --cpu:显示CPU使用情况
-C 0,3,total:统计指定CPU或汇总信息
-d, --disk:显示磁盘使用情况
-D total,hda:统计指定磁盘或汇总信息
-g, --page:显示分页情况
-i, --int:显示中断统计
-I 5,eth2:显示平均负载情况,包括1分钟、5分钟、15分钟平均值
-l, --load:开启平均负载统计
-m, --mem:显示内存使用情况
-n, --net:显示网络信息
-N eth1,total:指定网络接口
-p, --proc:统计进程信息,包括runnable、uninterruptible、new
-r, --io:统计I/O请求,包括读写请求
-s, --swap:显示swap使用情况
-S swap1,total:可以指定多个swap
-t, --time:显示统计时时间,对分析历史数据非常有用
-y, --sys:统计系统信息,包括中断、上下文切换
--ipc:显示IPC使用情况,消息队列、信号量、共享内存
--lock:统计lock信息
--raw:统计raw信息
--tcp:统计tcp信息
--udp:统计udp信息
--unix:统计unix信息
-M stat1,stat2:统计external信息
-a, --all:等同于-cdngy
-f, --full:等同于-C -D -I -N -S
-v, --vmstat:等同于-pmgdsc -D
--integer:强制输出整型值,默认
--nocolor:禁用颜色功能
--noheaders:禁止重复输出header,默认打印依次屏幕输出一次header
--noupdate:当delay大于1时,禁止在时间间隔内更新
--output file:输出状态信息到CVS文件
--aio:开启同步IO统计

3、dstat插件简介

dstat通过插件方式提供灵活可扩展的功能,dstat --list可以查看dstat支持的所有参数,internal是dstat自带的监控参数,/usr/share/dstat是dstat支持的插件,这些插件可以扩展dstat的功能,如可以监控电源(battery)、mysql等。 
但插件并不是都可以直接使用,部分插件还依赖其它python包支持,如想监控mysql,必须要装python连接mysql的一些包。
Linux性能优化(五)——性能监控工具

4、dstat插件命令

--battery:电池电池百分比(需要ACPI)
--battery-remain:电池剩余小时、分钟(需要ACPI)
--cpufreq:CPU频率百分比(需要ACPI)
--dbus:dbus连接的数量(需要python-dbus)
--disk-util:显示某一时间磁盘的忙碌状况
--fan:风扇转速(需要ACPI)
--freespace:每个文件系统的磁盘使用情况
--gpfs:gpfs读/写 I / O(需要mmpmon)
--gpfs-ops:GPFS文件系统操作(需要mmpmon)
--helloworld:dstat插件Hello world示例
--innodb-buffer:显示innodb缓冲区统计
--innodb-io:显示innodb I / O统计数据
--innodb-ops:显示innodb操作计数器
--lustre:显示lustreI / O吞吐量
--memcache-hits:显示memcache 的命中和未命中的数量
--mysql5-cmds:显示MySQL5命令统计
--mysql5-conn:显示MySQL5连接统计
--mysql5-io:MySQL5 I / O统计数据
--mysql5-keys:显示MySQL5关键字统计
--mysql-io:显示MySQL I / O统计数据
--mysql-keys:显示MySQL关键字统计
--net-packets:显示接收和发送的数据包的数量
--nfs3:显示NFS v3客户端操作
--nfs3-ops:显示扩展NFS v3客户端操作
--nfsd3:显示NFS v3服务器操作
--nfsd3-ops:显示扩展NFS v3服务器操作
--ntp:显示NTP服务器的ntp时间
--postfix:显示后缀队列大小(需要后缀)
--power:显示电源使用量
--proc-count:显示进程的总数
--rpc:显示rpc客户端调用统计
--rpcd:显示RPC服务器调用统计
--sendmail:显示sendmail队列大小(需要sendmail)
--snooze:显示每秒运算次数
--test:显示插件输出
--thermal:热系统的温度传感器
--top-bio:显示消耗块IO最大的进程
--top-cpu:显示消耗CPU最大的进程
--top-cputime:显示使用CPU时间最大的进程(单位ms)
--top-cputime-avg:显示使用CPU时间平均最大的进程(单位ms)
--top-io:显示消耗I/O最大进程
--top-latency:显示总延迟最大的进程(单位ms)
--top-latency-avg:显示平均延时最大的进程(单位ms)
--top-mem:显示使用内存最大的进程
--top-oom:显示第一个被OOM结束的进程
--utmp:显示utmp连接的数量(需要python-utmp)
--vmk-hba:显示VMware ESX内核vmhba统计数
--vmk-int:显示VMware ESX内核中断数据
--vmk-nic:显示VMware ESX内核端口统计
--vz-io:显示每个OpenVZ请求CPU使用率
--vz-ubc:显示OpenVZ用户统计
--wifi:无线连接质量和信号噪声比
--disk-util:显示某一时间磁盘的忙碌状况
--freespace:显示当前磁盘空间使用率
--proc-count:显示正在运行的程序数量
--top-bio:示块IO最大的进程
--top-cpu:显示CPU占用最大的进程
--top-io:显示正常IO最大的进程
--top-mem:显示占用最多内存的进程

5、dstat常用命令

(1)CPU使用情况查看
查看CPU使用情况,执行命令dstat -c。显示各个信息为CPU用户占用,系统占用,空闲,等待,中断,软件中断等信息。
dstat -c
Linux性能优化(五)——性能监控工具
(2)磁盘使用情况查看
dstat -d
Linux性能优化(五)——性能监控工具
(3)网络状态查看
dstat -n
Linux性能优化(五)——性能监控工具
(4)内存使用信息查看
dstat -m
Linux性能优化(五)——性能监控工具
(5)系统平均负载查看
dstat -l
Linux性能优化(五)——性能监控工具
(6)IO使用情况查看
dstat -r
Linux性能优化(五)——性能监控工具
(7)TCP、UDP查看
dstat --tcp --udp -t -c 3
Linux性能优化(五)——性能监控工具

四、iotop

1、iotop简介

iotop是一个用来监视磁盘IO使用状况的top类工具,可监测进程使用的磁盘IO的信息(requires 2.6.20 or later)。
iotop 监控Linux内核输出的IO使用信息,并且显示一个系统中进程或线程的当前IO使用情况。
yum -y install iotop

2、iotop命令

iotop [OPTIONS]
--version:显示版本号
-h, --help:显示帮助信息
-o, --only:仅显示正在产生IO操作的进程或者线程,可以随时按o切换。
-b, --batch:运行在非交互式的模式
-n NUM, --iter=NUM:在非交互式模式下,设置显示次数,
-d SEC, --delay=SEC:设置显示的间隔秒数,支持非整数值
-p PID, --pid=PID:只显示指定PID的信息
-u USER, --user=USER:显示指定用户的进程信息
-P, --processes:只显示进程,一般为显示所有的线程
-a, --accumulated:显示从iotop启动后每个线程完成了的IO总数
-k, --kilobytes:以KB显示
-t, --time:在每一行前添加一个当前的时间

3、iotop快捷键

r:反向排序,
o:切换至选项--only,
p:切换至--processes选项,
a:切换至--accumulated选项
q:退出 
i:改变线程的优先级

4、iotop常用命令

iotop
Linux性能优化(五)——性能监控工具
第一行表示进程的磁盘读写大小总数。
第二行表示磁盘真实的读写大小总数。由于缓存、缓冲区、IO合并等因素的影响,可能并不相等于进程的磁盘读写大小总数。
进程部分,从各个角度来分别表示进程的IO情况,包括线程ID、IO 优先级、每秒读磁盘的大小、每秒写磁盘的大小、换入和等待IO的时钟百分比等。
iotop -b -o -n 2 -d 5 -t
使用非交互模式将iotop命令输出信息写入日志。

五、blktrace

1、blktrace简介

blktrace是一个针对Linux内核中块设备IO层的跟踪工具,用来收集磁盘IO信息中当IO进行到块设备层(block)时的详细信息(如IO请求提交、入队、合并、完成等信息),是由Linux内核块设备层的维护者开发的,目前已经集成到内核2.6.17及其后内核版本中。blktrace可以获取IO请求队列的各种详细的情况,包括进行读写的进程名称、进程号、执行时间、读写的物理块号、块大小等。
Linux性能优化(五)——性能监控工具

2、blktrace安装

在线安装:
yum install blktrace

3、blktrace工作原理

(1)blktrace测试时会分配物理机上逻辑CPU数量个线程,并且每一个线程绑定一个逻辑CPU来收集数据。
(2)blktrace在debugfs挂载的路径(默认/sys/kernel/debug)下每个线程产生一个文件,然后调用ioctl函数,通过系统调用交由内核处理,由内核经由debugfs文件系统往文件描述符写入数据。
(3)blktrace需要结合blkparse使用,由blkparse来解析blktrace产生的特定格式的二进制数据。
(4)blkparse仅打开blktrace产生的文件,从文件里面取数据进行解析展示。

4、blktrace命令

blktrace -d dev [ -r debugfs_path ] [ -o output ] [ -w time ] [ -a action ] [ -A action_mask ] [ -v ]
-A hex-mask:设置过滤信息mask成十六进制mask
-a mask:添加mask到当前的过滤器
-b size:指定缓存大小for提取的结果,默认为512KB
-d dev:添加一个设备追踪
-I file:增加文件的设备到追踪
-k:杀掉正在运行的追踪进程
-n num-sub:指定缓冲池大小,默认为4个子缓冲区
-o file:指定输出文件的名字
-r rel-path:指定的debugfs挂载点
-V:打印版本号
-w seconds:设置运行的时间
sudo blktrace -d /dev/sda -o test1

5、blkparse

blkparse是分析和展示blktrace采集数据的工具。
blktrace -d /dev/sda -o - | blkparse -i -
将blktrace结果输出到屏幕,然后blkparse将屏幕中的blktrace结果作为分析的输入,最后将分析的结果输出到屏幕。
blktrace -d /dev/sda |blkparse -i -
将blktrace结果输出到本地目录,文件名为sda.blktrace.x,
blkparse -i trace
将trace文件作为blkparse输入,blkparse结果输出到屏幕。
blkparse -i trace -o outout
将trace文件作为blkparse输入,将分析结果输出到output文件。

六、perf

1、perf简介

perf是 Linux Kernel 2.6.31以后内置的性能分析工具,以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。perf top能够实时显示占用CPU时钟最多的函数或者指令,可以用来查找热点函数。

2、perf命令

perf [--version] [--help] [OPTIONS] COMMAND [ARGS]
annotate:解析perf.data文件,显示被注释的代码。
archive:根据perf.data数据文件记录的build-id,将所有被采样的elf文件打包,可以在其它机器上分析数据文件中记录的采样数据。
bench:perf中内置的benchmark,包括针对调度器和内存管理子系统的benchmark。
buildid-cache:管理perf的buildid缓存,每个elf文件都有一个唯一buildid,buildid被perf用来关联性能数据与elf文件。
buildid-list:列出数据文件中记录的所有buildid。
config:在配置文件获取和设置变量
data: Data file related processing
diff: 对比两个perf.data数据文件的差异,给出每个符号(函数)在热点分析上的具体差异。
evlist:列出数据文件perf.data中所有性能事件。
inject:读取perf record工具记录的事件流,并将其定向到标准输出。在被分析代码中的任何一点,都可以向事件流中注入其它事件。
kmem: 针对内核内存(slab)子系统进行追踪测量的工具
kvm:追踪测试运行在KVM虚拟机上的Guest OS。
list:列出当前系统支持的所有性能事件,包括硬件性能事件、软件性能事件以及检查点。
lock:分析内核中的锁信息,包括锁的争用情况,等待延迟等。
mem:分析内存访问情况
record:收集采样信息,并将其记录在perf.data数据文件中。
report:读取perf record创建的数据文件,并给出热点分析结果。
sched:针对调度器子系统的分析工具。
script:执行perl或python写的功能扩展脚本、生成脚本框架、读取数据文件中的数据信息等。
stat:系统全局性能统计工具
test:perf对当前软硬件平台进行健全性测试,测试当前软硬件平台是否能支持perf所有功能。
timechart:针对测试期间系统行为进行可视化的工具
top:系统性能实时分析工具
probe:定义动态检查点。
trace:追踪系统调用工具

3、perf record

perf record [&lt;options&gt;] [&lt;command&gt;]
-e event:指定性能事件(多个用,分隔列表)
-p pid:指定待分析进程pid(多个用,分隔列表)
-t tid:指定待分析线程tid(多个用,分隔列表)
-u uid:指定收集用户数据,uid为名称或数字
-a:从所有CPU收集系统数据
-g:开启函数调用关系图记录
-C cpu-list:只统计指定CPU列表的数据,如:0,1,3或1-2
-r RT priority:perf程序以SCHED_FIFO实时优先级RT priority运行,值越大进程优先级越高(即nice值越小)
-c count: 事件每发生count次采一次样
-F n:每秒采样n次
-o output.data:指定输出文件output.data,默认输出到perf.data

4、perf top

perf top [&lt;options&gt;]
-e event:指定采样分析的性能事件。
-p pid:指定目标进程
-k pat:指定带符号表的内核映像所在路径
-K:不显示属于内核或模块的符号。
-U:不显示属于用户态程序的符号。
-d n:刷新周期,默认为2s,默认每2s从mmap的内存区域读取一次性能数据。
-g:得到函数的调用关系图。
Linux性能优化(五)——性能监控工具
第一行分别是采样数(Samples)、事件类型(event)和事件总数量(Event count)。perf总共采集4000个CPU时钟事件,而总事件数则为1922242080。如果采样数过少,后序数据无实际参考价值。
第一列Overhead是symbol的性能事件在所有采样中的比例,用百分比来表示。
第二列Shared是函数或指令所在的动态共享对象(Dynamic Shared Object),如内核、进程名、动态链接库名、内核模块名等。
第三列Object是动态共享对象的类型。[.]表示用户空间的可执行程序、或者动态链接库,而[k]表示内核空间。
第四列Symbol是符号名,即函数名。当函数名未知时,用十六进制的地址来表示。
perf top可以实时展示系统的性能信息,但并不保存数据,因此不能用于离线或者后续分析。perf record提供了保存数据的功能,保存后的数据需要使用perf report解析展示。
perf top 和 perf record加上-g参数,开启调用关系采样,可以根据调用链来分析性能问题。
perf工具看不到函数名,只能看到一些 16 进制格式的函数地址。其实,只要你观察一下 perf 界面最下面的那一行,就会发现一个警告信息:
perf找不到待分析进程依赖库时,不会打印出函数名称,只会显示16进制格式的函数地址。
如果应用程序在编译发布时,使用strip删除ELF二进制文件的符号表,perf也只能显示函数地址。

5、perf report

perf report [options]
-i filename:指定输入文件,默认为perf.data

更多相关文章

  1. Linux性能优化(六)——网络配置工具
  2. Linux性能优化(七)——网络流量监控工具
  3. 使用后台进程和 Shutdown Hook 友好地关闭 Tomcat
  4. Linux性能优化(八)——网络测试工具
  5. Linux性能优化(九)——Kernel Bypass
  6. Linux性能优化(十)——CPU性能分析工具
  7. Linux性能优化(十三)——CPU性能测试
  8. Linux性能优化(十一)——CPU性能优化原理
  9. Linux性能优化(十二)——CPU性能调优

随机推荐

  1. 思科链路聚合(捆绑)
  2. 极简机器学习入门指南
  3. VUE~~~通过首页链接到功能点对应的tab页(
  4. 2018年度总结-Flag果然不能随便立
  5. 思科实验
  6. java最全面试题来啦,看到了还担心面试过不
  7. Flask vs Django,Python Web 开发用哪个框
  8. 重磅!Github 私有仓库免费开放
  9. 【开发者必看】移动应用趋势洞察白皮书-
  10. VUE~~~table编辑列功能