linux
文章平均质量分 57
未央君x
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
qemu trace event
实例diff --git a/hw/virtio/trace-events b/hw/virtio/trace-eventsindex 650e521e3..7c254468d 100644--- a/hw/virtio/trace-events+++ b/hw/virtio/trace-events@@ -63,6 +63,10 @@ virtio_queue_notify(void *vdev, int n, void *vq) "vdev %p n %d vq %p" virtio_n原创 2022-04-27 19:26:02 · 745 阅读 · 0 评论 -
virtio设备状态
spec描述驱动初始化探测的大致过程:例如virtio_net驱动中用于初始化queue,创建网络设备并初始化一些必要的数据结构当后端模拟出virtio_net设备后,驱动扫描到virtio设备,然后调用virtio_pci_driver中virtio_pci_probe函数完成pci设备的启动。注册一条virtio_bus,同时在virtio总线进行注册设备。当virtio总线进行注册设备register_virtio_device,将调用virtio总线的probe函数:v.原创 2022-04-19 20:17:55 · 1329 阅读 · 0 评论 -
linux 根分区扩容(非LVM)
[root@test_img ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsr0 11:0 1 1024M 0 romvda 253:0 0 20G 0 disk├─vda1 253:1 0 1G 0 part /boot└─vda2 253:2 0 7G 0 part / 这个是我们要扩容的根分区vdb 253:16 0 30G 0 disk[root@.原创 2022-04-14 19:35:02 · 2169 阅读 · 2 评论 -
crash and systemtap
crashdis查看函数源码及所在文件1) dis -s devmem_is_allowed2)查看反汇编指令dis devmem_is_allowed3) 反汇编并输出所在源码行号dis -l devmem_is_allowed汇编指令查询:汇编跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等 - 云+社区 - 腾讯云xor 异或exclusive ORsystemtap想要通过crash修改虚拟地址值时..原创 2022-03-31 16:39:27 · 335 阅读 · 0 评论 -
mmio理解
EPT页表是通过EPT violation建立起来的。EPT misconfig是用来标志MMIO访问异常。entry中的保留位(reserved bit set)被设置了就会触发EPT misconfig。即为110b时会被trigger, 可写可执行不可访问,MMIO是通过设置spte的保留位来标志的.写这种内存页会触发EPT misconfig,比如virtio-pci的notify配置空间地址。对于violation,它主要就是缺页故障,当内存读写都不被允许时就会触发hardware_s原创 2022-03-25 10:02:54 · 1398 阅读 · 0 评论 -
kmemleak
开启方法kernel hacking -> Memory Debugging -> Kernel memory leak detector修改后的.config 文件如下:重新编译内核,并替换vmlnuz# cp arch/x86/boot/bzImage /boot/vmlinuz-5.4.32/sys/kernel/debug/kmemleak 存在表示开启memleak 监视内核内存泄漏成功,开启后会有一个内核线程kmemleak# echo cl.原创 2022-03-24 19:31:29 · 696 阅读 · 0 评论 -
arm SMMU
相当于x86下面的IOMMU,是不同架构的不同实现。统一在linux中的IOMMU框架内部,都由结构体 iommu_device 管理。SMMU的作用是将设备的DMA请求地址翻译成可用的物理地址,当不开启SMMU时也可以直接使用DMA来搬运内存。SMMU是为了安全考虑中间加了一道。结构体关系如下图,smmu domian和 iommu的domain的关系,以及iommu group的作用x86下通过intel_iommu=on 来开启ref:ARM SMMU的原理与IOMMU原创 2022-03-11 09:32:20 · 2177 阅读 · 0 评论 -
lspci
1) 以树的形式打印pci设备# lspci -t -v2) -n 显示vendor 和 device id , -m 向后兼容显示pci 设备的数据# lspci -v -m -n -s 00:04.03)通过hexdump 查看pci设备的配置空间# hexdump /sys/devices/pci0000\:00/0000\:00\:05.0/config4) -x显示设备内存空间(开始的128位)-xxx显示全部的配置空间# lspci -s 00:05.0.原创 2022-03-09 11:07:02 · 2357 阅读 · 0 评论 -
gro_flush_timeout and napi_defer_hard_irqs
One concrete usage can be : echo 20000 >/sys/class/net/eth1/gro_flush_timeout echo 10 >/sys/class/net/eth1/napi_defer_hard_irqs If at least one packet is retired, then we will reset napi counter to 10 (napi_defer_hard_irqs), ensurin...原创 2022-03-09 10:31:40 · 796 阅读 · 0 评论 -
strace praticle
Q1: strace: attach: ptrace(PTRACE_SEIZE, 11329): Operation not permittedA1: 遇到过一次# sudo strace -p 11329出现如上问题,11329为虚拟机主进程,原因是因为gdb在跟这个进程,所以出现该问题原创 2022-03-07 19:29:17 · 687 阅读 · 0 评论 -
/dev/mem
x86平台下只允许访问起始的1MB内存# dd if=/dev/mem of=/dev/nulldd: error reading '/dev/mem': Operation not permitted1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.187975 s, 5.6 MB/sworkaround it by follows:(1) Rebuild your kernel without the CONFIG_STRICT_DEVMEM ...原创 2022-03-04 17:15:37 · 1046 阅读 · 0 评论 -
qemu 编译及使用
1. 安装及编译1. 编译qemu```https://www.qemu.org/download/#sourceTo download and build QEMU 6.2.0:wget https://download.qemu.org/qemu-6.2.0.tar.xztar xvJf qemu-6.2.0.tar.xzcd qemu-6.2.0qemu 编译打开trace./configure --enable-trace-backends=log --enable-k...原创 2022-02-22 19:51:56 · 5166 阅读 · 0 评论 -
io 单队列和多队列理解
传统单队列框架适应的是老式机械盘。而多队列则适应追求更高iops的SSD等新设备Software Queues 主要负责io调度和优化,可以配置一个 CPU core 一个队列,或者一个 CPU socket 一个队列。这将消除或大大减少锁争用。I/O 调度和优化只会在 Software Queues 中完成,并且不会发生跨队列的 I/O 合并和排序。harware queues负责将从 Software Queues 过来的 I/O 请求发送给底层硬件,其数量和硬件相关。目前普通硬件一般...原创 2022-02-18 15:23:52 · 1418 阅读 · 0 评论 -
io inflight理解
inlight所在接口位置 /sys/block/sda/inflight表示io request 已经到了driver层但是还没有完成。描述的只是一个状态。如果想知道在driver层hang住的request可以考虑引入阿里的特性。https://gitee.com/anolis/cloud-kernel/commit/80d6ee240ea37f36ecd6dda5c8a6d7723cba73d3blk_mq_queue_tag_busy_iter(q, blk_mq_check_infli原创 2022-02-18 14:42:42 · 1958 阅读 · 0 评论 -
linux kenel 编译
Q1: 内核编译方法A:# yum install -y ncurses-devel openssl-devel.x86_64 bison flex elfutils-libelf-develfor BTF compile need dwarves, so should enable the PowerTools repo than# yum install dwarves# make -j16# make modules_install# make installQ2: 通过红帽的s..原创 2022-02-17 10:24:00 · 1763 阅读 · 0 评论 -
pcie 理解
相关名词RC Root Complex BAR Base Address Register BDF Bus+Device+Function组成ID用来定义pci设备id。PCIe系统,最大支持256条Bus,每条Bus上可以挂最多32个Device,而每个Device最多又能实现8个Function,而每个Function对应着4KB的配置空间。上电的时候,这些配置空间都是需要映射到Host的内存空间,因此,需要占用内存空间是:256*32*8*4KB =256MB。原创 2022-02-15 09:49:15 · 1348 阅读 · 0 评论 -
blktrace的使用
1. blktrace 简介blktrace就是记录一个IO进入block layer后的各个步骤。可以通过各个步骤的时间统计进行IO性能问题的调查。IO可能经历的人生包括以下:Remap: 可能被DM(Device Mapper)或MD(Multiple Device, Software RAID) remap到其它设备 Split: 可能会因为I/O请求与扇区边界未对齐、或者si...原创 2019-07-22 11:43:57 · 3957 阅读 · 0 评论 -
ubuntu 源
1. ubuntu源修改 1) 更换源的方法: 修改/etc/apt/sources.list 2) apt-get update 需要修改下面对应的代号Ubuntu 12.04 (LTS)代号为precise。Ubuntu 14.04 (LTS)代号为trusty。Ubuntu 15.04 代号为vivid。Ubuntu 15.10 代号为wily。U...原创 2019-05-06 19:23:59 · 338 阅读 · 0 评论 -
ctags 快捷键
1. ctags 快捷键ctags快捷键 NO. 功能描述 快捷键 1 转到上一个位于第一列的"{" double 【 2 转到下一个位于第一列的"{" double 】 3 转到上一个空行 { 4 转到下一个空行 } 5 转到当前光标所指的局部变量的定义 gd 6 转到当前光标所指的...原创 2019-05-05 17:45:24 · 2374 阅读 · 0 评论 -
使用GDB单步调试KVM内核
调试内核的方法有很多。 但是通过gdb 和KVM调试有以下几个好处。1) 可以实现单步调试。2) 环境配置简单。1. RHEL7.3上实现KVM内核调试。1) 在domain行,追加xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0' 。并追加<qemu:commandline>标签,该标签将会允许启动qemu时,向qem...原创 2018-04-13 14:50:20 · 762 阅读 · 0 评论 -
linux NUMA技术
1. 概述NUMA(Non-Uniform Memory Access Architecture)即非一致性内存访问技术。NUMA系统有多个Node通过高速互连的网络联系起来的系统。而Node则是由一组cpu和本地内存组成。不同的Node有不同的物理内存,由于Node访问本地内存和访问其它节点的内存的速度是不一致的,为了解决非一致性访问内存对性能的影响,有一些工具可以使用。包括 numac原创 2016-10-13 15:11:02 · 9774 阅读 · 0 评论
分享