• 我来也
    2018-12-21
    [D14打卡]
    很赞同老师的观点:
    "任何东西的第一遍学习有不懂的地方很正常,忍住恐惧别放弃,继续往后走,前面很多问题可能会一并解决掉 ,再看第二遍、第三遍就更轻松了。"
    我好像很早就这样实践了: 第一遍不管看不看得懂,先尽量细看. 再特意过一段时间回头重新学一遍,除了能掌握更多的东西,还能体会到"温故而知新"的感觉.
    ----------------------------
    现在就是"师傅领进门,修行看个人."
    "先从最基本的原理开始,掌握性能分析的思路,然后再逐步深入,探究细节"
    ----------------------------
    自从学了专栏,越来越觉得自己的<英语>该好好补补了,深感能力不足啊.
    那么多好的资源,一手资料几乎都是英文的,看不懂真是可惜了!
    展开

    作者回复: 英语也是基本要求,多读多看就熟悉了😊

    
     7
  • ninuxer
    2018-12-21
    打卡day15
    perf report中关于swapper的内容,后面我也去查了,才发现是自己理解有误,感谢老师指出,这里的swapper不是内存概念的swap,而是cpu空闲时执行的一个默认调用
    要啃啃《性能之巅:洞悉系统、企业与云计算》了,作者博客http://www.brendangregg.com/
    请教老师,理解内核这块,有合适的书推荐么?我查了下,看了下目录,感觉《Linux内核设计与实现》可能比较适合,其他的如《Linux内核情景分析》,《深入理解Linux内核》怎么样?
    展开

    作者回复: 《深入Linux内核架构》挺不错,不过是本大块头,啃下应该要花不少时间

    
     3
  • 辉晖
    2019-06-27
    对于问题1,使用方法4还是看不到函数名,只能看到一些 16 进制格式的函数地址

    在载入perf.data过程不断出现提示:Failed to open ***, continuing without symbols
    载入完成后,perf 界面最下面的那一行警告信息是:Cannot load tips.txt file, please install perf!

    作者回复: Failed to open ***, continuing without symbols 说明还是无法找到相应的符号表,根据警告提示逐个安装应该就可以了

    
     1
  • 辣椒
    2019-01-07
    老师,我把perf.data拷贝进容器,然后在容器中按照提示安装了perf, 再执行perf_4.9 report时报以下信息:
    Kernel address maps (/proc/{kallsyms,modules}) were restricted.
    Check /proc/sys/kernel/kptr_restrict before running 'perf record'
    As no suitable kallsyms nor vmlinux was found, kernel samples
    can't be resolved.
    Samples in kernel modules can't be resolved as well.
      xPress any key...

    我本身的机器是centos7.2. 请老师提示一下解决的思路,谢谢!

                                                    
    展开

    作者回复: echo 0> /proc/sys/kernel/kptr_restrict

    
     1
  • Griffin
    2018-12-23
    终于赶上了,倪老师能不能讲讲网络问题应该怎么排查呀,最近老是被docker,docker swarm的container寻址困扰。

    作者回复: 不要急,我们有网络模块的

    
     1
  • 无名老卒
    2018-12-23
    全部刷完了,把各个CPU容易出现问题的情况基本上都写清楚了,而且都有详细的测试用例,除了软中断那个需要SYN攻击之外,其他的测试用例都一五一十的都做过了,受益良多。我有以下疑问,希望老师可以解答下:
    1、软中断老师是用SYN攻击的方式来讲解这部分的实例的,那还有没有其他典型的软中断的案例呢?
    2、硬中断的实例老师没有讲,可以补一篇吗?
    3、老师所讲的实例,都是单一模式的,在实际的生产环境下,情况要复杂很多,老师能再讲一下印象最深刻的实际情况吗?

    另外,我有一个小建议,老师的案例都是用docker来搭建环境的,在一个用例要多次下载不同的image,但其实这些image只是里面的测试用例变了,所以可以先下载file文件,使用docker -v挂载的方式进行测试。这样可以大大减少下载镜像的时间。如下,就是使用docker run -v /usr/local/src/app-fix2:/app --privileged --name app-fix -d feisky/app:iowait 来运行的镜像。
    ```
    [root@linjx src]# docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    0ecb229f87e4 feisky/app:iowait "/app" 3 minutes ago Up 3 minutes app-fix
    a251996e0d60 feisky/app:iowait "/app" 5 hours ago Exited (137) 20 minutes ago app
    ```
    展开

    作者回复: 1. 网络后面还会讲
    2. 硬中断的原理其实差不太多,所以没有单独拎出来
    3. 现在单个模块的案例的确不太复杂,这也是为了让大家都能更直观理解这些问题

    关于image下载,其实可以使用国内的镜像加速,网络搜索找到。并且基础镜像一样的话,也只需要下载新的layer即可。

    最后,你的容器推退出了,请参考github设置启动参数解决。

    
     1
  • GEEKBANG_9388667
    2020-01-26
    急问老师,我线上load太高了,但是没有看到资源瓶颈,是running进程太多了,这个怎么办
    Tasks: 604 total, 37 running, 567 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 16.1 us, 2.6 sy, 0.0 ni, 75.6 id, 0.0 wa, 0.0 hi, 5.7 si, 0.0 st
    KiB Mem : 65806076 total, 49759864 free, 8558936 used, 7487276 buff/cache
    KiB Swap: 0 total, 0 free, 0 used. 55111636 avail Mem

    启了很多进程,特别是nginxpod有10多个
    展开
    
    
  • 笑
    2020-01-22
    补打卡,Day 13
    
    
  • 陈凯
    2020-01-16
    老师说得很好
    
    
  • 长白
    2019-12-18
    centos7容器里面无法安装高版本的perf,perf top 一直显示黑屏,perf.data解析出来也是16进制的地址,请老师赐教
    
    
  • 东宇
    2019-12-11
    老师问下 perf系统调用显示unknown模块怎么处理 可以完全显示函数名字
    
    
  • Geek_557823
    2019-11-26
    老师, perf top -g -p {pid} 里面Event Count 和Samples 都为 0, 但是 perf top -g 是有很多数据的
    环境:
    CentOS Linux release 7.7.1908 (Core)
    Linux localhost 3.10.0-1062.el7.x86_64
    perf version 3.10.0-1062.4.1.el7.x86_64.debug
    note:
      ubuntu 上可以正常使用
      重装系统(CentOS-7-x86_64-Minimal-1908.iso (942.00 MB)), yum -y install perf 问题依旧
      使用 Linux Resource 源码安装 问题依旧
    镜像问题: https://segmentfault.com/q/1010000020976198/
    麻烦老师抽空看一下哈
    展开
     1
    
  • zKerry
    2019-11-06
    难到没有综合性质的性能检测工具吗?
    
    
  • holly
    2019-10-10
    1. 在模拟高并发过程中,在第一台机器终端使用top命令查看php-fpm的进程号pid
    2. 使用`perf record -g -p pid`一段时间,退出
    3. 使用`docker cp perf.data phpfpm:/tmp`将2生成的perf.data文件拷贝到容器中分析
    4. 执行`docker exec -i -t phpfpm bash`
    5. 在容器的bash中运行如下命令
    ```
    $ cd /tmp/
    $ apt-get update && apt-get install -y linux-tools linux-perf procps
    $ apt-get install -y linux-perf
    $ perf_4.9 report
    ```
    显示的还是地址,而不是函数名
    显示的还是地址,而不是函数名
    Samples: 175K of event 'cpu-clock', Event count (approx.): 43885750000
      Children Self Command Shared Object Symbol `
    + 99.99% 0.00% php-fpm / [.] 0xffff80411a63c2e1 a
    - 99.99% 0.00% php-fpm [unknown] [.] 0x981e258d4c544155 a
         0x981e258d4c544155 a
       - 0x202e1 a
          - 99.70% 0xaf48b4
    ubuntu 18.04按照老师github上安装的docker镜像
    如果极客时间留言支持daima或markdown就好了
    展开
    
    
  • feihui
    2019-08-19
    老师,你好,请教个问题。关于 Failed to open *** 文件问题,我按照方法三(即 bindfs)的方法进行挂载,但还是提示 Failed to open ***,请问这个问题要怎么解决呢?thx
    
    
  • 郡主秋
    2019-07-18
    老师,我的在centos7上用perf分析宿主机上的应用也是显示16进制地址,没有函数名 ,这种怎么处理呢

    作者回复: perf 界面应该有缺少符号的提示吧?按照提示安装缺少的调试信息

     1
    
  • Geek_joanie
    2019-07-09
    老师您好,做这个练习的过程中也遇到了符号不能解析的问题,采用了您所说的第三和第四种方法分别进行尝试,但是发现仍然有部分的符号不能解析?

    Samples: 10K of event 'cpu-clock', Event count (approx.): 10074000000

      Children      Self  Command  Shared Object        Symbol

    +   99.99%     0.00%  php-fpm  libc-2.24.so         [.] __libc_start_main

    +   99.99%     0.00%  php-fpm  [unknown]            [.] 0x782e258d4c544155

    +   99.76%     0.00%  php-fpm  php-fpm              [.] php_execute_script

    +   99.76%     0.00%  php-fpm  php-fpm              [.] 0xffffaa91f1219c67

    +   99.75%     0.00%  php-fpm  php-fpm              [.] zend_execute

    +   99.75%     0.00%  php-fpm  php-fpm              [.] zend_execute_scripts

    +   97.43%    37.76%  php-fpm  php-fpm              [.] execute_ex

    +   15.85%     0.00%  php-fpm  php-fpm              [.] 0xffffaa91f11cbea9

    +   11.05%    11.04%  php-fpm  libm-2.24.so         [.] sqrt

    +    8.44%     8.43%  php-fpm  php-fpm              [.] add_function

    +    8.36%     0.00%  php-fpm  php-fpm              [.] 0xffffaa91f11cbd9a

    +    1.95%     0.00%  php-fpm  php-fpm              [.] 0xffffaa91f11b70b7

    +    1.95%     1.95%  php-fpm  php-fpm              [.] 0x0000000000a800b7

    展开
    
    
  • 叶先生
    2019-05-13
    老师你好:
    我在学习使用perf 分析打包docker 下的.net core应用时,有个问题困扰了很久 在采用你的第四条建议 外面使用 perf record 记录然后进入容器分析,一直看不到.net core 函数名 网上找了一些资料比如在dock镜像打包的时候 export COMPlus_PerfMapEnabled=1,还是无法看到,不知道哪里出了问题

    作者回复: .net 调试符号表有没有配置?可以再试试方法三或者方法一

    
    
  • 一木成舟🌊
    2019-03-26
    我是在一台机器上,report record和perf reprot的,report函数名是16进制的,看各位同学的留言是在centos下才会出现。
    但是我是Ubuntu 14.04.2 LTS。也是出现这种问题了。按照老师上面的步骤,
    $ apt-get install -y linux-tools-common linux-tools-generic linux-tools-$(uname -r))
    安装后,还是不行,实在让人费解。

    作者回复: 这应该是版本太老导致的

    
    
  • 韦伯
    2019-03-04
    老师,我用的是ubuntu16.04,内核版本4.4.0.117,安装perf时提示需要安装linux-4.4.0.117-generic,但是安装上述包时又找不到。需要升级内核版本解决吗?有没有其他方式可以解决呢

    作者回复: 这一般是源的问题,更新源试试。也可以搜索deb包或者源码安装

    
    
我们在线,来聊聊吧