摘要:
概述 要想高速利用内存就必须高效利用cpu cache,关于cpu cache这里就不多加讨论了,自己感兴趣可以google 而cpu访问内存的单位是cache line,因此高效利用cache line是写c程序的必要条件 __attribute__ 作用于结构体内部变量 输出为8,因为编译器会默 阅读全文
摘要:
场景 Host上运行qemu kvm虚拟机,其中虚拟机的网卡类型为virtio-net,而Host上virtio-net backend使用vhost-net 数据包进入虚拟机代码分析 首先看vhost-net模块注册,主要使用linux内核提供的内存注册机制,这部分开发过linux kernel的 阅读全文
摘要:
Vhost 回顾 Linux中的vhost驱动程序提供了内核virtio设备仿真。 通常,QEMU用户空间进程模拟guest的I / O访问。 Vhost将virtio仿真代码放到内核中,使QEMU用户空间脱离。 这允许设备仿真代码直接调用到内核子系统,而不是从用户空间执行系统调用。 vhost-n 阅读全文
摘要:
性能监控工具 perf kvm 为了在主机中使用perf kvm,您必须访问/ proc / modules和/ proc / kallsyms文件。“复制/ proc文件从guest虚拟机到主机“,以将文件传输到主机并对文件运行报告。 注意: 如果直接复制所需的文件(例如,使用scp),您将只复制 阅读全文
摘要:
本文的目的不完全在于提供调优信息,而是在于告诉读者了解Linux kernel如何处理数据包,从而能够在 自己的实践中发挥Linux 内核协议栈最大的性能 The NIC ring buffer 接收环缓冲区在设备驱动程序和NIC之间共享。 网卡分配发送(TX)和接收(RX)环形缓冲区。 环形缓冲区 阅读全文
摘要:
在ip4-icmp-input 与 ip4-udp-input后可以注册后续的处理函数,ip4-icmp-input根据 icmp的报文类型选择相应的处理函数,而ip4-udp-input根据端口选择相应的处理函数。 注册函数分别为:ip4_icmp_register_type udp_regist 阅读全文
摘要:
X86 操作系统是设计在直接运行在裸硬件设备上的,因此它们自动认为它们完全占有计算机硬件。x86 架构提供四个特权级别给操作系统和应用程序来访问硬件。 Ring 是指 CPU 的运行级别,Ring 0是最高级别,Ring1次之,Ring2更次之…… 就 Linux+x86 来说, 操作系统(内核)需 阅读全文
摘要:
在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网、内网到外网的作用。不同子网之间的访问完全是由路由功能实现的,而内外网之间访问使用的是SNAT和DNAT技术。 作为NFV的底层技术FD. 阅读全文
摘要:
Host Setting: 1、关闭power savings mode在BIOS中 2、设置 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 为 performance 3、添加启动参数GRUB_CMDLINE_LINUX="intel_ 阅读全文
摘要:
在VPP中,报文以向量批处理的形式在节点之间以流水线的方式处理,可以更加高效的利用CPU的i-cache,节点可以动态生成并加入到转发图中,节点分为多种类型,如VLIB_NODE_TYPE_INPUT,为输入节点。可以按照VPP的框架自定义节点如: 其中最重要的是回调函数snat_out2in_no 阅读全文