hotspot 编译
仅在 ubuntu 16.04 上验证通过: ~$ sudo add-apt-repository ppa:kubuntu-ppa/backports ~$ sudo apt update ~$ sudo apt install libkf5threadweaver-dev libkf5i18n-dev libkf5configwidgets-dev \ libkf5coreaddons-dev libkf5itemviews-dev libkf5itemmodels-dev libkf5kio-dev \ libkf5solid-dev libkf5windowsystem-dev libelf-dev libdw-dev cmake \ extra-cmake-modules gettext ~$ git clone --recurse-submodules https://github.com/KDAB/hotspot.git ~$ cd hotspot ~$ mkdir build ~$ cd build ~$ cmake .. ~$ make 也可
perf 使用
使用 perf stat 查看计数器: ~# perf stat -p 5211 -- sleep 60 使用 perf record 指定进程进行 cpu 采样: ~# perf record -e cpu-clock -F 1000 -g --call-graph dwarf -p 2290094 -- sleep 60 可以在远程机器上对采集的数
gdb 基础功能使用
Ubuntu 下的 gdb 可以通过 show configuraion 查看 gdb 自身编译时的配置(CentOS 7.x 下的 gdb 竟然没有这个命令): ~$ gdb -n -batch -ex 'show configuration' | grep python --with-python=/usr (relocatable) 上述命令实际
gdb 与 Python 集成
gdb 从 7.0 版本开始提供了比较完善的 Python api 支持,通过使用这些 Python api 可以比较容易的得到被调试程序的各种信息,比如各线程的调用栈等,而
CentOS 部分安装 debuginfo 包
当磁盘空间不足时,我们可能无法安装完整版本的 debuginfo 包,此时可以提取必须的部分进行安装。 注意:仅针对 CentOS 系统。 可以直接在已安装的
SELinux 宏与接口
在定义 SELinux 访问规则时,可以手写 allow 规则,也可以使用 SELinux 预定义的宏(policy/support)或 SELinux 模块(policy/mod
编写 librados SELinux 规则
需求比较简单,就是编写独立的规则允许 OpenStack 的 qemu 进程能够访问(完全控制) ceph 的客户端 admin socket,之所以需要独立的规则(或者说
SELinux 工具使用
setatus 查看 SELinux 状态 ~# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28 或者使用 selinuxenable
rbd map failed to add secret
故障现象 故障分析 现场所使用的 Ceph 为 Jewel 版本,定位到出错代码所在的位置如下: src/krbd.cc#L158 static int build_map_buf(CephContext *cct, const char *pool, const char *image, const char *snap, const char *options, string *pbuf) { ... if (keyring.get_secret(cct->_conf->name, secret)) {
SELinux 基础
SELinux 的目的是最小化进程的权限,即让进程在受限环境下运行,限制进程可以访问的资源。在 RHEL/CentOS 系统中默认使用的 targeted 策略为所有进程开放所