在Ubuntu 16.04
系统上执行如下命令
1 |
$ dd if=/dev/zero of=/tmp/zero.img bs=10M count=100000 |
的时候,可能会非常耗时,这个时候,如果让dd
命令输出执行进度信息,会非常有用。
重新打开一个Shell
,然后执行如下命令即可每秒输出一次进度信息
1 |
$ watch -n 1 pkill -USR1 -x dd |
Ubuntu(友邦拓,网友也喜欢称之为“乌班图”)是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想.
在Ubuntu 16.04
系统上执行如下命令
1 |
$ dd if=/dev/zero of=/tmp/zero.img bs=10M count=100000 |
的时候,可能会非常耗时,这个时候,如果让dd
命令输出执行进度信息,会非常有用。
重新打开一个Shell
,然后执行如下命令即可每秒输出一次进度信息
1 |
$ watch -n 1 pkill -USR1 -x dd |
在编译C++
代码的时候,我们有时需要比较一下不同编译器之间优化性能的差异,因此需要在Clang
与GCC
之间进行切换,用来比较最后的实际效果。
在Ubuntu 16.04
系统上使用如下命令进行切换
1 2 |
$ sudo apt-get install clang $ sudo update-alternatives --config c++ |
最近在研究如何提高C++
程序的性能,Google
开源的TCMalloc
,在C++
小对象频繁创建销毁的处理上拥有非常大的优势。
在Ubuntu 16.04
上使用如下命令安装最新的TCMalloc
1 |
$ sudo apt-get install google-perftools |
对于已经编译好的程序,可以使用如下命令,让程序加载TCMalloc
来大致测试一下程序性能的提升
1 |
$ LD_PRELOAD="/usr/lib/libtcmalloc.so.4" |
目前,perf
是Linux
系统上最全面最方便的一个性能检测工具。由Linux
内核携带并且同步更新。
Ubuntu 16.04
系统上需要执行如下命令安装:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 常规内核使用 #sudo apt-get install linux-tools-generic # 低延时内核使用 #sudo apt-get install linux-tools-lowlatency # 因此我们根据内核自动选择安装 $ sudo apt-get install linux-tools-`uname -r | cut -d- -f1-2`-`uname -r | cut -d- -f3` $ sudo apt-get install linux-tools-common #解决报错"Kernel address maps (/proc/{kallsyms,modules}) were restricted. Check /proc/sys/kernel/kptr_restrict before running 'perf record'". $ sudo sh -c " echo 0 > /proc/sys/kernel/kptr_restrict" |
使用方法如下(gcc
编译时最好使用-g
参数,生成符号,方便调试):
1 2 3 4 5 6 |
#生成性能日志文件,默认生成 perf.data $ sudo perf record -e cpu-clock -g ./hello #解析性能日志 $ perf report -g -i perf.data |
Ubuntu 16.04
下使用GCC5
,CUDA 7.5
编译Caffe
时候报告如下错误:
1 |
/usr/lib/gcc/x86_64-linux-gnu/5/include/mwaitxintrin.h(42): error: identifier "__builtin_ia32_mwaitx" is undefined |
目前比较好的解决方法是在编译的时候增加_MWAITXINTRIN_H_INCLUDED
宏。
如果使用cmake
来编译代码,则只需要在CMakeLists.txt
中增加如下语句即可
1 |
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_MWAITXINTRIN_H_INCLUDED") |
skipfish
是Google
的工程师MIchal Zalewski
开发的一款网站安全检测工具,它完全实现了全自动化操作,不需要人工干预.
在Ubuntu 16.04
上使用skipfish
是比较简单的,使用如下命令安装
1 |
$ sudo apt-get install skipfish |
网站检测命令如下:
1 |
$ skipfish -o output_folder http://www.example.com |
其中output_folder
是检测结果的输出目录,扫描结束后可打开index.html
查看扫描结果。
1 |
$ git clone https://github.com/opencv/opencv.git |
1 2 3 4 |
$ sudo apt-get install -y cmake #借助系统自带的opencv简化依赖安装步骤 $ sudo apt-get install -y libopencv-dev |
1 2 3 4 5 6 7 8 9 |
$ cd opencv $ mkdir build $ cd build $ cmake .. $ make -j 10 |
1 |
$ sudo make install |
如果执行cmake
时候出现如下错误信息
1 2 3 4 5 6 7 8 9 10 |
CMake Error at CMakeLists.txt:11 (message): FATAL: In-source builds are not allowed. You should create separate directory for build files. -- Configuring incomplete, errors occurred! |
则应该是在代码根目录下直接执行过cmake
,导致根目录下生成了CMakeCache.txt
,需要删除CMakeCache.txt
再次执行编译即可。
在使用GPU
做计算,比如跑Deep Learning
代码的时候,我们可能希望能够实时检测显存的使用情况。
Nvidia
自带了一个名为nvidia-smi
的命令行工具,会显示显存使用情况,但这个命令行工具只能输出一次结果,不支持持续监控输出。
这时候就需要用到watch
命令了.
最近在调试脚本时,偶尔会由于脚本错误,出现一批的进程没有结束的情况. 手工结束进程,太浪费时间,因此找到一个可以批量结束同名进程的脚本命令,如下:
1 |
$ ps -ef | grep '进程名' | grep -v grep | awk '{print $2}' | xargs kill -9 |