1 个不稳定版本
0.1.0 | 2023年7月24日 |
---|
#1022 在 硬件支持
34KB
594 行
vhost-device-rng - RNG 模拟后端守护进程
描述
此程序是一个 vhost-user 后端,用于模拟 VirtIO 随机数生成器 (RNG)。它使用宿主的随机数生成器池,默认为 /dev/urandom,但可以任意配置,以满足虚拟机的请求。
守护进程旨在通过使用 --max-bytes 和 --period 选项来尊重可能的随机生成器硬件的限制。例如,每秒5千字节将转换为"--max-bytes 5000 --period 1000"。如果一个应用程序请求超过允许的限度的字节,则线程将阻塞到新周期开始。当请求多个线程时,守护进程将自动在虚拟机之间平均分配可用的带宽。
与 QEMU 开发和测试,实现基于 vhost-user 协议,因此应与其他虚拟机管理程序兼容。请参阅下面的示例。
概要
vhost-device-rng [选项]
选项
.. 程序:: vhost-device-rng
.. 选项:: -h, --help
打印帮助。
.. 选项:: -s, --socket-path=PATH
vhost-user Unix 域套接字的位置,此路径将附加 0,1,2..socket_count-1。
.. 选项:: -f, --filename 随机数生成器源文件,默认为 /dev/urandom。
.. 选项:: -c, --socket-count=INT
附加到虚拟机的数量(套接字),默认设置为 1。
.. 选项:: -p, --period
以毫秒为单位的 RNG 硬件生成随机数据速率。与 --max-bytes 选项一起使用。
.. 选项:: -m, --max-bytes
与--period参数结合使用,提供RNG设备每毫秒可以生成的最大字节数。
示例
应首先启动守护进程
::
host# vhost-device-rng --socket-path=/some/path/rng.sock -c 1 -m 512 -p 1000
注意,从上述命令中可以看出,将创建套接字路径"/some/path/rng.sock0"。这需要将其作为chardev套接字与QEMU进行通信,以便后端RNG设备能够与vhost RNG守护进程通信
::
host# qemu-system -M virt
-object memory-backend-file,id=mem,size=4G,mem-path=/dev/shm,share=on
-chardev socket,path=/some/path/rng.sock0,id=rng0
-device vhost-user-rng-pci,chardev=rng0
-numa node,memdev=mem
...
许可证
本项目许可采用以下其中之一
- Apache许可证,版本2.0
- BSD-3-Clause许可证
依赖项
~8–19MB
~253K SLoC