首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【重识云原生】第四章云网络4.7.4节vhost-user方案——virtio的DPDK卸载方案

    在 vhost_net 的方案中,由于 vhost_net 实现在内核中,guest 与 vhost_net 的通信,相较于原生的 virtio 方式性能上有了一定程度的提升,从 guest 到 kvm.ko 的交互只有一次用户态的切换以及数据拷贝。这个方案对于不同 host 之间的通信,或者 guest 到 host nic 之间的通信是比较好的,但是对于某些用户态进程间的通信,比如数据面的通信方案,openvswitch 和与之类似的 SDN 的解决方案,guest 需要和 host 用户态的 vswitch 进行数据交换,如果采用 vhost_net 的方案,guest 和 host 之间又存在多次的上下文切换和数据拷贝,为了避免这种情况,业界就想出将 vhost_net从内核态移到用户态。这就是 vhost-user 的实现。

    02

    menuconfig 配置选项详解

    详细介绍内核配置选项及删改情况 第一部分:全部删除 Code maturity level options —> 代码成熟等级选项 []Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。 第二部分 :除以下选项,其它全部删除 General setup—〉 System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 第三部分:除以下选项,其它全部删除 Loadable module support —> 可引导模块支持 建议作为模块加入内核 [] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。 []Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。 第四部分:全部删除 Block layer—–〉块设备 第五部分:除以下选项,其它全部删除 Processor type and features —> 处理器类型 Subarchitecture Type (PC-compatible) —> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。 Processor family(386) : 它会对每种CPU做最佳化,让它跑的好又快,一般来说,你是什么型号的就选什么型号的就好。我选的是386,这样内核会省下不少空间 第六部分:除以下选项,其它全部删除 Power management options (ACPI, APM) —> 电源管理选项 [ ] Power Management Debug Support 电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。 ACPI Support —〉高级电源接口配置支持,如果BIOS支持,建议选上这项 []Button 这个选项用于注册基于电源按钮的事件,比如power, sleep等,当你按下按钮时事件将发生,一个守护程序将读取/proc/acpi/event,并执行用户在这些事件上定义的动作比如让系统关机。可以不选择,根据自己的需求。 第七部分:除以下选项,其它全部删除 Bus options (PCI, PCMCIA, EISA, MCA, ISA) —> 总线选项 []PCI support PCI access mode (Any) —> PCI外围设备配置,强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。 第八部分:除以下选项,其它全部删除 Executable file formats —> Kernel support for ELF binaries ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。一定要选。 第九部分:除以下选项,其它全部删除 Networking Networking options —> []Unix domain sockets []TCP/IP networking 第十部分:除以下选项,其它全部删除 Device Drivers —>设备驱动 Block devices——-〉 []Compaq SMART2 support [] Compaq Smart Array 5xxx support []Loopback device support 大部分的人这一个选项都选N,因为没有必要。但是如果你要mount iso文件的话,你得选上Y

    00

    linux设备驱动第一篇:设备驱动程序简介

    首先,我们知道驱动是内核的一部分,那么驱动在内核中到底扮演了什么角色呢? 设备驱动程序在内核中的角色:他们是一个个独立的“黑盒子”,使某个特定的硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备的工作细节。(说白了,驱动程序除了对外提供特定的接口外,任何实现细节对应用程序都是不可见的。)用户的操作通过一组标准化的调用执行,而这些调用独立于特定的驱动程序。驱动程序的任务是把这些标准化调用映射到实际硬件的设备特有操作上。 在编写驱动程序时,程序员应该特别注意下面这个概念:编写访问硬件的内核代码时,不要给

    010

    platform device

    大家好,又见面了,我是你们的朋友全栈君。platform device ================= 头文件:linux/platform_device.h 为什么使用 platform device? ————————– 从硬件的角度来说,集成在嵌入式芯片内部的外设离CPU最近,它们不依附于GPIO或者PCI,I2C此类的 总线,它们挂接在soc内存空间,cpu靠操作这些soc内存空间来控制这些片内的外设。 从驱动的角度,为了获取这些挂接在soc内存空间的外设的资源,linux系统专门定义了一类总线来 挂接它们。这就是platform总线,挂接在此总线上的设备称为platform device,操作设备的驱动 叫做platform driver。 platform device的作用就是描述片内外设的资源,结构体的定义如下 struct platform_device{ const char *name; // 设备号 struct device *dev; u32 num_resources; // 设备使用的资源的数量 struct resource *resource; // 资源数组 };

    02
    领券