自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (8)
  • 收藏
  • 关注

原创 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 506

原创 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 1058

原创 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 1573 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 225

原创 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 1111

原创 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 535

原创 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 1816

原创 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 1580

原创 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 409

原创 strace praticle

Q1: strace: attach: ptrace(PTRACE_SEIZE, 11329): Operation not permittedA1: 遇到过一次# sudo strace -p 11329出现如上问题,11329为虚拟机主进程,原因是因为gdb在跟这个进程,所以出现该问题

2022-03-07 19:29:17 466

原创 /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 820

原创 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 4536

原创 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 1151

原创 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 1329

原创 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 1380

原创 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 1034

原创 kvm steal 溯源

背景一般我们通过 kvm guest 中的%steal 指标来看 CPU 的争抢。但是目前在Host上并没有相关的手段或者指标来监控Guest 是否发生了争抢。本文主要介绍如何在Host 判断争抢的发生,及 steal time的产生的内核代码分析。CPU Steal TimeSar manual中对 %steal 的描述如下。Steal time is the percentage of time a virtual CPU waits for a real CPU while th...

2022-02-15 09:21:49 380

原创 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 3503

原创 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 247

原创 ctags 快捷键

1. ctags 快捷键ctags快捷键 NO. 功能描述 快捷键 1 转到上一个位于第一列的"{" double 【 2 转到下一个位于第一列的"{" double 】 3 转到上一个空行 { 4 转到下一个空行 } 5 转到当前光标所指的局部变量的定义 gd 6 转到当前光标所指的...

2019-05-05 17:45:24 1998

原创 使用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 556

原创 linux NUMA技术

1. 概述NUMA(Non-Uniform Memory Access Architecture)即非一致性内存访问技术。NUMA系统有多个Node通过高速互连的网络联系起来的系统。而Node则是由一组cpu和本地内存组成。不同的Node有不同的物理内存,由于Node访问本地内存和访问其它节点的内存的速度是不一致的,为了解决非一致性访问内存对性能的影响,有一些工具可以使用。包括 numac

2016-10-13 15:11:02 9307

原创 python中的getrlimit和setrlimit

python中的getrlimit和setrlimit和c中一样。需要导入python的类库。(# import resource )resource:可能的选择有RLIMIT_AS //进程的最大虚内存空间,字节为单位。RLIMIT_CORE //内核转存文件的最大长度。RLIMIT_CPU //最大允许的CPU使用时间,秒为单位。当进程达到软限制,内核将给其发送

2016-08-03 15:51:18 2381

原创 用openvswitch创建docker容器之间的vxlan网络

环境:host1 : rhel7.2host2:     rhel7.21)启动docker,导入imag# systemctl startdocker# systemctl enabledocker# docker load -irhel_img.tar2)创建网桥并给ip# ovs-vsctl add-brvxbr# ifconfig vxbr10.

2016-07-21 16:25:40 1447

原创 shell中的双冒号

shell中经常有“ echo ${a::1}”这种表达式。其实就是相当于“echo ${a:0:1},表示打印字符串种的第0个到第一个字母。类似于其它语言的substring(a, 0, 1)。 双冒号,只是省略了其中的”0“, 初看会让人迷惑。

2016-03-29 16:03:23 3975

原创 关于注册com+组件

在注册dll的时候,会报一个message”警告:类型库导出程序在签名中遇到泛型类型的实例。泛型类型不能导出到com“网上查了很多资料,无果。好像是com+组件中不能用泛型,也无法导入泛型的程序集。还请多多指教。现在程序一跑到那种带有泛型的方法就会抛出异常,因为无法导入到组件中。所以会找不到程序集。困惑还请高手不吝赐教。谢谢

2011-05-16 13:40:00 634

SSH框架完整实例

SSH框架完整实例,值得初学者学习和借鉴

2011-12-12

RTP音频视频传输

基于RTP协议的实时传输音频和视频的demo简单易懂,可以实现RTP音频视频流的传输,有类库源码

2011-12-07

TomCat的配置图解

TomCat的配置图解,按部就班就可以成功的配置java的server

2011-12-05

java环境搭建教程

java环境搭建教程,教你如何搭建java环境,配置Java运行环境和web服务器

2011-12-05

Spring、structs、hibernate所有jar包

Spring、structs、hibernate所有jar包

2011-12-05

C#流媒体播放器

实现流媒体播放音频或视频文件,只需要传入相应的rtsp地址即可,通过rtp协议和sdp协议实现

2011-11-30

C# Tabcontrol空间重写实现多种样式

c#重写的tabcontrol控件,请参照,跟大家分享一下

2011-11-30

C#视频聊天

基于p2p的视频聊天,输入各自对方的ip地址和端口即可通过soket聊天

2011-11-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除