vhost target

这里我们主要介绍用SPDK vhost target来加速虚拟机中的I/O,在介绍这个加速方案之前,我们先看看主流的I/O设备虚拟化的方案。

· 纯软件模拟:完全利用软件模拟出一些设备给虚拟机使用,主要的工作可以在Simics、Bochs、纯QEMU解决方案中看到。

· 半虚拟(Para-Virtualization):主要是一种frontend-backend的模型,在虚拟机中的Guest OS中使用frontend的驱动,Hypervisor中暴露出backend接口。这种解决方案需要修改Guest OS,或者提供半虚拟化的前端驱动。

· 硬件虚拟化:主流的方案有SR-IOV、VT-D等,可以把整个设备直接分配给一个虚拟机,或者如果设备支持SR-IOV,就可以把设备的VF(Virtual Function)分配给虚拟机。

对于以上3种虚拟化的解决方案,我们会把重点放在virtio解决方案,即半虚拟化上,因为SPDK的vhost-scsi/blk可以用来加速QEMU中半虚拟化的virtio-scsi/blk。另外针对QEMU中NVMe的虚拟化方案,也给出了vhost-NVMe的加速方案。虽然SPDK vhost-scsi/blk主要是用来加速virtio协议的,SPDK vhost-NVMe用于加速虚拟机中的NVMe协议的,但是这3种加速方案其实可以有机地整合为一个整体的vhost target加速方案。

1.virtio

virtio是I/O虚拟化中一种非常优秀的半虚拟化方案,需要在Guest的操作系统中运行virtio设备的驱动程序,通过virtio设备和后端的Hypervisor或用于加速的vhost进行交互。

在QEMU中,virtio设备是QEMU为Guest操作系统模拟的PCI设备,这个设备可以是传统的PCI设备或PCIe设备,遵循PCI-SIG定义的PCI规范,可以具有配置空间、中断配置等功能。目前virtio协议由OASIS(Advanced Open Standards for the Information Society)virtio工作组负责维护,用户可以提交对virtio协议的提案到该工作组进行讨论。PCI设备包括厂商ID和设备ID,virtio向PCI-SIG注册了PCI厂商ID 0x1AF4和设备ID,其中不同的设备ID代表不同的设备类型,如面向存储的virtio-blk和virtio-scsi设备ID分别为0x1001和0x1004。

virtio在QEMU中的总体实现可以分成3层(见下图):前端是设备层,位于Guest操作系统内部;中间是虚拟队列传输层,Guest和QEMU都包含该层,数据传输及命令下发完成都是通过该层实现的;第3层是virtio后端设备,用于具体落实来自Guest端发送的请求。

2.vhost加速

如前所述,virtio后端设备用于具体响应Guest的命令请求。例如,对virtio-scsi设备来讲,该virtio后端负责SCSI命令的响应,QEMU负责模拟该PCI设备,把该SCSI命令响应的模块在QEMU进程之外实现的方案称为vhost。这里同样分为两种实现方式,在Linux内核中实现的叫作vhost-kernel,而在用户态实现的叫作vhost-user。

以virtio-scsi为例,目前主要有3种virtio-scsi后端的解决方案。

1)QEMU virtio-scsi

这个方案是virtio-scsi最早的实现,如下图所示,Guest和QEMU之间通过virtqueue进行数据交换,当Guest提交新的SCSI命令到virtqueue时,根据virtio PCI设备定义,Guest会把该队列的ID写入PCI配置空间中,通知PCI设备有新的SCSI请求已经就绪;之后QEMU会得到通知,基于Guest填写的队列ID到指定的virtqueue获取最新的SCSI请求;最后发送到该模拟PCI设备的后端,这里后端可以是宿主机系统上的一个文件或块设备分区。当SCSI命令在后端的文件或块设备执行完成并返回给virtio-scsi backend模块后,QEMU会向该PCI设备发送中断通知,从而Guest基于该中断完成整个SCSI命令流程。 

这个方案存在如下两个严重影响性能的因素。

· 当Guest提交新的SCSI请求到virtqueue队列时,需要告知QEMU哪个队列含有最新的SCSI命令。

· 在实际处理具体的SCSI读/写命令时(在hostOS 中),存在用户态到内核态的数据副本。

数据副本影响性能,我们比较好理解,因为存储设备中的数据块相对于网络来说都是大包,但是为什么说Guest提交新的SCSI请求时也严重影响性能呢?根据virtio协议,Guest提交请求到virtqueue时需要把该队列的ID写入PCI配置空间,所以每个新的命令请求都会写入一次PCI的配置空间。在X86虚拟化环境下,Guest中对PCI空间的读/写是特权指令,需要更高级别的权限,因此会触发VMM的Trap,从而导致VM_EXIT事件,CPU需要切换上下文到QEMU进程去处理该事件,在虚拟化环境下,VM_EXIT对性能有重大影响,而且对系统能够支持VM的密度等方面也有影响,所以下面介绍的方案都是基于对这两点的优化来进行的。

2)Kernel vhost-scsi

这个方案是QEMU virtio-scsi的后续演进,基于LIO在内核空间实现为虚拟机服务的SCSI设备。实际上vhost-kernel方案并没有完全模拟一个PCI设备,QEMU仍然负责对该PCI设备的模拟,只是把来自virtqueue的数据处理逻辑拿到内核空间了。

为了实现在内核空间处理virtqueue上的数据,QEMU需要告知内核vhost-scsi模块关于virtqueue的内存信息及Guest的内存映射,这样其实省去了Guest到QEMU用户态空间,再到宿主机内核空间多次数据复制。但是由于内核的vhost-scsi模块并不知道什么时候在哪个队列存在新的请求,所以当Guest生成新的请求到virtqueue队列,再更新完PCI配置空间后,由QEMU负责通知vhost-kernel启动内核线程去处理新的队列请求。这里我们可以看到Kernel vhost-scsi方案相比QEMU virtio-scsi方案在具体的SCSI命令处理时减少了数据的内存复制过程,从而提高了性能。

3)SPDK vhost-user-scsi

这个方案是基于Kernel vhost-scsi的进一步改进,如下图所示,虽然Kernel vhost-scsi方案在数据处理时已经没有数据的复制过程,但是当Guest有新的请求时,仍然需要QEMU通过系统调用通知内核工作线程,这里存在两方面的开销:Guest内核需要更新PCI配置空间,QEMU需要捕获Guest的VMM自陷,然后通知Kernel vhost-scsi工作线程。

 

SPDK vhost-user-scsi方案消除了这两方面的影响,后端的I/O处理线程在轮询所有的virtqueue,因此不需要Guest在添加新的请求到virtqueue后更新PCI的配置空间。SPDK vhost-user-scsi的后端I/O处理模块轮询机制加上零拷贝技术基本解决了前面我们提到的阻碍QEMU virtio-scsi性能提升的两个关键点。

3.SPDK vhost-scsi加速

使用SPDK vhost-scsi启动一个VM实例的命令如下:

 

这里其实引入了vhost-user技术里面的两个关键技术实现:指定mem-path意味着QEMU会在Guest OS的内存中创建一个文件,share=on选项允许其他进程访问这个文件,也就意味着能访问Guest OS内存,达到共享内存的目的。字符设备/path/vhost.0是指定的socket文件,用来建立QEMU和后端的Slave target,即SPDK vhost target之间的通信连接。

QEMU Guest和SPDK vhost target是两个独立的进程,vhost-user方案一个核心的实现就是队列在Guest和SPDK vhost target之间是共享的,那么接下来我们就看一下vhost是如何实现这个内存共享的,以及Guest物理地址到主机的虚拟地址是如何转换的。

在vhost-kernel方案中,QEMU使用ioctl系统调用和内核的vhost-scsi模块建立联系,从而把QEMU中模拟的SCSI设备部分传递到了内核态,即内核态对该SCSI设备不是完全模拟的,仅仅负责对virtqueue进行处理,因此这个ioctl的消息主要负责3部分的内容传递:Guest内存映射;Guest Kick Event、vhost-kernel驱动用来接收Guest的消息,当接收到该消息后即可启动工作线程;IRQ Event用于通知Guest的I/O完成情况。同样地,当把内核对virtqueue处理的这个模块迁移到用户态时,以上3个主要部分的内容传递就变成了UNIX Domain socket文件了,消息格式及内容和Kernel的ioctl相比有许多相似和重复的地方。4.SPDK vhost-NVMe加速

经过上面的描述读者对virtio及vhost应该有了一定的了解,下面我们看一下NVMe的虚拟化是如何实现的。

我们首先看一下virtio和NVMe协议的一个对比情况,virtio和NVMe协议在设计时都采用了相同的环型结构,virtio使用avaiable和used ring作为请求和响应,而NVMe使用提交队列和完成队列作为请求和响应。NVMe读/写的具体流程如下图所示。

 

QEMU中很早就添加了对NVMe设备的模拟,和QEMU virtio-scsi类似,使用任意的文件来实现具体的NVMe I/O命令,和之前的QEMU virtio-scsi方案相比,QEMU NVMe存在相同的性能瓶颈,在上图的步骤2和步骤8,Guest都要写NVMe PCI配置空间寄存器,因此会存在VMM Trap自陷问题,由于后端主机使用文件来承载I/O命令,同样存在用户态到内核态数据副本的问题。如果要提升性能,那么同样需要解决这两个关键瓶颈。

针对Guest提交命令和完成命令时的写PCI寄存器问题,NVMe 1.3的协议给出了解决方案,即shadow doorbell。

NVMe 1.3强化了对虚拟化的支持,NVMe本身就是非常好的半虚拟化协议接口,针对模拟的控制器增加了对shadow doorbell的支持,如果存在一个NVMe控制器是软件模拟的,那么这个控制器可以告诉Guest这是一个模拟的控制器,将NVMe控制器Identify命令字段Optional Admin Command Support bit 8设置成1,Guest读取到该bit后会针对该模拟控制器为其设置除正常的PCI doorbell以外的shadow doorbell,当有命令下发到控制器的提交队列时,NVMe驱动会首先更新shadow doorbell,基于从后端模拟设备获取到的反馈,来决定是否更新PCI的doorbell,也就是说Guest是否更新PCI doorbell是由模拟设备后端来决定的。

那么我们来看下这个机制是如何工作的。首先协议新增了一个管理命令Doorbell Buffer Config,该命令使用两个独立的4KiB连续内存页面镜像控制器的doorbell寄存器。最大可以支持1024个队列,其中预留1个给管理命令队列,最大可以支持1023个I/O队列。

针对上面提到的另外一个性能瓶颈——内存副本,这里采用和vhost-user-scsi类似的方案。针对虚拟化场景,由于我们的后端存在高性能的物理NVMe控制器及SPDK本身的用户态NVMe驱动,因此对VM中下发的I/O命令,我们通过内存地址转换(Guest物理地址到主机虚拟地址)即可实现VM到NVMe设备端到端的数据零拷贝实现。

实现这个方案存在一个前提,由于物理的NVMe设备需要使用控制器内部的DMA引擎搬移数据,要求所有的I/O命令对应的数据区域都是物理内存连续的,因此这里我们需要使用Linux内核提供的hugetlbfs机制提供连续的物理内存页面。

 

SPDK iSCSI Target

SPDK iSCSI Target从2013年开始被开发,最初的框架基于Linux SCSI TGT,但是随着整个项目的进展,为了更好地发挥快速存储设备的性能,进而基于SPDK应用框架进行实现,以AIO、无锁化I/O数据路径等为设计原则,和原来的Linux SCSI TGT有很大的区别。

SPDK iSCSI Target的设计和实现利用了SPDK库的以下模块:应用框架、网络、iSCSI、SCSI、JSON-RPC、块设备和SPDK的设备驱动程序。对于iSCSI Target而言,它使用应用框架启动,并解析相关配置文件以初始化,也能接收和处理JSON-RPC请求,然后构建不同的子系统,如iSCSI、SCSI、块设备等子系统。对于I/O的处理,在网络接收到iSCSI的PDU包后,依次在iSCSI、SCSI、块设备层处理请求,最后由设备驱动程序处理。当I/O返回时,iSCSI Target程序将以相反的顺序处理,即块设备、SCSI、iSCSI、网络层。我们采用运行直到完成的模型,从而达到采用无锁化和异步处理I/O的方式的目的。

1.SPDK iSCSI Target加速设计和实现与其他常见的iSCSI Target实现(LIO、Linux SCSI TGT)相比,SPDK iSCSI Target使用以下几种方法来提高CPU单核的性能。

1)模块化设计

针对不同的功能模块,SPDK创建了多个子系统目录。对于SPDK iSCSI Target,SPDK创建了iSCSI模块,路径为spdk/lib/event/subsystem/iscsi和spdk/lib/iscsi,该模块定义了所有和iSCSI相关的函数和数据结构。在SPDK iSCSI Target运行之前,iSCSI子系统先会被初始化。

在这个过程中,SPDK首先会设置一些iSCSI参数的默认值(如最大连接数等),然后会从配置文件中读取一些全局配置,包括节点名前缀、最大连接数、最大队列深度、ErrorRecoveryLevel等级、NOPInterval等,配置文件没有定义的参数会采用默认值。特别要提到的是,每个CPU核上的最大连接数会在这个阶段设置,该参数对性能的影响较大。

然后,SPDK会初始化内存池,包括PDU池、会话池和任务池。PDU池又包括通用PDU、ImmediateData和DataOut 3种。会话池会根据最大连接数创建。任务池会创建iSCSI任务池。内存池的创建方法主要是调用DPDK rte_mempool_create函数从大页中申请内存,这样做的优点是申请快、使用方便。接下来SPDK会初始化connection,这一步主要是设置共享内存,以及设置一个保存每个core上的connection数量的数组。

以上初始化结束后,SPDK就会初始化将要提到的两个polling group,还会解析portal group、Initiator group和Target node。

2)每个CPU核处理一组iSCSI的连接

根据SPDK应用框架,每个CPU上启动一个Reactor不断地去执行两组Poller,一组基于timer的Poller的列表和一组普通Poller列表。为此SPDK的iSCSI Target在每个core的Reactor上都创建了一个polling group,用于处理这个组里面的所有iSCSI连接。对应于每个polling group,会有两组Poller,它们分别执行spdk_iscsi_poll_group_poll和spdk_iscsi_poll_group_handle_nop。

在解析完portal group配置之后,SPDK iSCSI Target就会在每个portal group中监听socket请求,并注册一个Poller专门用于网络事件监听。如果有socket请求,就会得到一个FD(File Descriptor),然后这个FD会加入epoll的监听,并且创建iSCSI connection。

在创建connection的时候,会初始化一些与iSCSI相关的参数,包括以下内容:NOPINTERVAL(默认是30s,最大是60s),支持的session数目(默认是128个,最大是1024个),每个session最大连接数(默认是2个),每个逻辑core最大连接数(默认是4个),ErrorRecoveryLevel(默认是0)。特别要提到的是,SPDK iSCSI Target会设置接收和发送缓冲大小,这个缓冲用于暂时保存iSCSI命令。同时SPDK会初始化几个链表,用于保存和PDU相关的数据,包括read/write和SNACK PDU列表,R2T任务列表等。在初始化完成之后,SPDK就会把这个connection加入polling group里,开始执行任务。

· spdk_iscsi_poll_group_poll主要用于处理socket连接上的请求。通过epoll监听所有FD上定义的事件。目前我们定义的事件是datain,对应的dataptr指向了这个FD对应的iSCSI conneciton。这个Poller在相应的Reactor上会不间断地执行,检查网络事件是否有数据进来。每次循环Poller可以最多处理32个事件,如果有数据进来,则触发每个iSCSI connection的回调函数spdk_iscsi_conn_sock_cb,然后读出每个connection。

· 执行spdk_iscsi_poll_group_handle_nop的Poller是一个定时器Poller。每隔一秒,这个Poller就会被触发执行这个函数,然后我们设置一个循环来检查每个iSCSI连接上的NOP-Out请求。如果发现有NOP-Out没有被处理,而且时间超过了iSCSI timeout设置的超时时间,SPDK iSCSI Target就会把这个connection状态设置为exiting。如果没有超时,iSCSI Target就会发送NOP-In给iSCSI客户端。

3)基于简单的负载平衡算法

当iSCSI Target使用多个CPU核启动的时候,根据SPDK的应用程序框架,会有多个Reactor,每个Reactor上都会有Poller。因为监听网络事件的acceptor默认运行在一个Reactor的Poller上,所以每个新进入的iSCSI连接都会在acceptor所在的Reactor上运行。如此一来,就会导致所有的CPU core处理的iSCSI连接不均衡。

为此我们设计了一个算法。因为iSCSI的连接有状态的变化,所以当连接从login状态转化为FFPlogin状态FFP(Full Feature Phase)的时候,我们会对iSCSI连接进行迁移,也就是从一个Reactor上执行转入另一个Reactor。没有进入FFP的iSCSI连接不用进行迁移,因为这些iSCSI连接很快会断掉,而且不涉及对后端I/O数据的处理,为此不需要进行迁移。我们会设计一个简单的算法来计算每个Reactor上的iSCSI connection连接数目,然后根据对应的连接的会话等信息,选择一个新的Reactor。迁移的过程相对来讲还是比较复杂的,我们首先会将这个iSCSI连接从当前的polling group中去除(包括有关网络事件的监听),然后加入另外Reactor的polling group中(通过SPDK应用框架提供的线程间通信机制)。

4)零拷贝支持

对于iSCSI读取命令,我们利用零拷贝方法,这意味着缓冲区在SPDK Bdev层中进行分配,并且在将iSCSI datain响应pdus发送到iSCSI启动器后,此缓冲区将被释放。在所有iSCSI读取处理过程中,不存在从存储模块到网络模块的数据复制。

5)iSCSI数据包处理优化

SPDK对读和写的数据包处理都有64KB的限制。当处理读请求大于64KB的时候,SPDK就会创建DATAIN任务队列,同时会设置DATAIN任务数的最大值为64KB。SPDK创建的每个DATAIN任务大小都是64KB。针对写命令,SPDK定义了MaxBustLength为64KB乘以connection的DATAOUT缓冲数。所以在发送R2T时,在R2T中设置的可以接收的数据大小为MaxBustLength和剩余待传输数据中的最小值,以保证对方发过来的数据包符合协议的需求。

6)TCP/IP协议栈优化

SPDK库对TCP/IP的网络处理进行了相应的API封装,这样就可以整合不同的TCP/IP协议栈。目前SPDK库既可以使用内核的TCP/IP协议栈,也可以使用用户态的TCP/IP协议栈进行矢量包处理(Vector Packet Processing,VPP)。

VPP是思科VPP技术的开源版本,一个高性能包处理栈,完全运行于用户态。作为一个可扩展的平台框架,VPP能够提供随时可用的产品级的交换机或路由器功能。

SPDK主要使用了VPP的socket处理,包括socket的创建、监听、连接、接收和关闭。SPDK也会调用VPP的epoll API来创建socket group。在配置SPDK的时候指定VPP的目录路径,就可以使用VPP。所以对SPDK的iSCSI Target来讲,网络的优化可以选择VPP提供的用户态TCP/IP协议栈,然后使用DPDK提供的PMD网卡,就可以实现从网络到后端数据处理的完全零拷贝解决方案。

2.在Linux环境下配置SPDK iSCSI Target示例

这里我们简单地介绍用配置文件配置一个可用于本机loop模式运行的iSCSI Target示例。

· 在本机一个shell中,执行以下命令来运行iscsi_tgt:

iscsi.conf配置文件中的参数及section对应的介绍可以在/spdk/etc/spdk/iscsi.conf.in里面找到,其配置文件的内容如下:

· 在本机另一个shell中,执行以下命令:

执行结果如下,sdc即为刚才找到的Target端设备:

配置fio文件,名为jobfile的配置文件内容如下:

 

执行fio命令进行读/写操作并测试性能指标,内容如下:

 

执行iscsiadm命令退出,内容如下:

 

SPDK NVMe-oF Target

NVMe协议制定了本机高速访问PCIe SSD的规范,相对于SATA、SAS、AHCI等协议,NVMe协议在带宽、延迟、IOps等方面占据了极大的优势,但是在价格上目前相对来讲还是比较贵的。不过不可否认的是,配置PCIe SSD的服务器已经在各种应用场景中出现,并成为业界的一种趋势。

此外为了把本地高速访问的优势暴露给远端应用,诞生了NVMe-oF协议。NVMe-oF Target是NVMe协议在不同传输网络(transport)上面的延伸。NVMe-oF协议中的transport可以多种多样,如以太网、光纤通道、Infiniband等。当前比较流行的transport实现是基于RDMA的Ethernet transport、Linux Kernel和SPDK的NVMe-oF Target等,另外对于光纤通道的transport,NetApp基于SPDKNVMe-oF Target的代码,实现了基于光纤通道的transport。

NVMe-oF Target严格来讲不是必需品,在没有该软件的时候,我们可以使用iSCSI Target或其他解决方案来替换。由于iSCSI Target比较成熟和流行,我们有必要把NVMe-oF Target与iSCSI Target进行对比,如表所示。

从表中我们可以获得如下信息。

· 目前NVMe-oF Target在以太网上的实现,需要有支持RDMA功能的网卡,如支持RoCE或iWARP。相比较而言,iSCSI Target更加通用,有没有RDMA功能支持关系不是太大。

· 标准的NVMe-oF Target主要是为了导出PCIe SSD(并不是说不能导出其他块设备),iSCSI Target则可以导出任意的块设备。从这一方面来讲,iSCSI Target的设计目的无疑更加通用。

· NVMe-oF Target是NVMe协议在网络上的扩展,毫无疑问的是如果访问远端的NVMe盘,使用NVMe-oF协议更加轻量级,直接是NVMe-oF→NVMe协议到盘,相反如果使用iSCSI Target,则需要iSCSI→SCSI→NVMe协议到盘。显然在搭载了RNIC + PCIe SSD的情况下,NVMe-oF能发挥更大的优势。

总体而言iSCSI Target更加通用,NVMe-oF Target的设计初衷是考虑性能问题。当然在兼容性和通用性方面,NVMe-oF Target也在持续进步。

· 兼容已有的网卡:NVMe-oF新的规范中已经加入了基于TCP/IP的支持,这样NVMe-oF就可以运行在没有RDMA支持的网卡上了。已有的网卡就可以兼容支持iSCSI及NVMe-oF协议,意味着当用户从iSCSI迁移到NVMe-oF上时,可以继续使用旧设备。当然从性能方面来讲,必然没有RDMA网卡支持有优势。

· 后端存储虚拟化:NVMe-oF协议一样可以导出非PCIe SSD,使得整个方案兼容。比如SPDK的NVMe-oF Target提供了后端存储的简单抽象,可以虚拟出相应的NVMe盘。在SPDK中可以用malloc的块设备或基于libaio的块设备来模拟出NVMe盘,把NVMe协议导入SPDK通用块设备的语义中。当然远端看到的依然是NVMe盘,这只是协议上的兼容,性能上自然不能和真实的相匹配,但是这解决了通用性的问题。

如此NVMe-oF协议可以做到与iSCSI一样的通用性。当然在长时间内,NVMe-oF和iSCSI还是长期并存的局面。iSCSI目前已经非常成熟,而NVMe-oF则刚刚开始发展,需要不断地完善,并且借鉴iSCSI协议的一些功能,以支持更多的功能。

SPDK在2016年7月发布了第一款NVMe-oF Target的代码,遵循了NVMe over fabrics相关的规范。SPDK的NVMe-oF Target实现要早于Linux Kernel NVMe-oF Target的正式发布。当然在新Linux发行版都自带NVMe-oF Target的时候,大家就会有一个疑问,我们为什么要使用SPDK的NVMe-oF Target。

SPDK的NVMe-oF Target和内核相比,在单核的性能(Performance/per CPU core)上有绝对的优势。

· SPDK的NVMe-oF Target可以直接使用SPDK NVMe用户态驱动封装的块设备,相对于内核所使用的NVMe驱动更具有优势。

· SPDK NVMe-oF Target完全使用了SPDK提供的编程框架,在所有I/O的路径上都采用了无锁的机制,为此极大地提高了性能。

· 对RDMA Ethernet transport的高效利用。SPDK目前对RDMA transport的实现虽然使用标准的RDMA编程库,如libibverbs,但是融入了SPDK的编程框架。从目前来讲,每个分给SPDK的CPU core上运行的Reactor都运行了一个group Poller,这个Poller可以负责处理所有归属这个CPU core处理的连接,这些连接贡献一个RDMA的completion queue,所以在多并发连接的情况下可以极大降低I/O处理的延时。

总的来说,SPDK NVMe-oF Target的实现还是比较复杂的,代码里面包含着异步编程的理念,包括各种回调函数。

SPDK NVMe-oF Target的主程序位于spdk/app/nvmf_tgt。因为NVMe-oF和iSCSI一样都有相应的subsystem(代码位于spdk/lib/event/subsystems/nvmf),只有在配置文件或RPC接口中调用了相应的函数,才会触发相应的初始化工作。这部分代码最重要的函数是nvmf_tgt_advance_state,主要通过状态机的形式来初始化和运行整个NVMe-oF Target系统。另外一部分代码位于spdk/lib/nvmf,主要是处理来自远端的NVMe-oF请求,包括transport层的抽象,以及实际基于RDMA transport的实现。如果读者希望学习SPDK NVMe-oF Target的细节,可以从spdk/lib/event/subsystems/nvmf目录的nvmf_tgt.c中的spdk_nvmf_subsystem_init函数入手。

目前SPDK最新发布的18.04版本中加入了很多对NVMe-oF Target的优化,包括连接的组调度,基于Round Robin的方式在不同的CPU core之间均衡负载,相同core上的连接共享rdma completion queue,等等。

当然目前NVMe-oF Target还在持续地开发迭代过程中,一些重要的feature也提上了日程,如支持TCP/IP的transport。这个工作分为两部分:一部分是支持基于内核TCP/IP的transport,另一部分是和用户态的VPP的TCP/IP进行整合。

 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. RuoYi(若依)前后端分离版本,windows下部署

    若依前后端分离版本部署:(源代码地址:https://gitee.com/y_project/RuoYi-Vue)工具:IDEA, Redis, Mysql 下载完包,解压后分开导入IDEA 就不过多介绍了,详见(http://doc.ruoyi.vip/ruoyi-vue/document/hjbs.html):这里主要介绍部署:windows + tomcat:1、打…...

    2024/3/4 7:41:07
  2. 前端 img标签显示 base64格式的 图片

    在做项目的时候,我从后端返回了一个base64格式的图片文件,想把它渲染在前端页面上,找了一下午都没有找到办法,最后终于找到了资料!哈哈!解决办法就是这样后来又找了相关用法,总结如下: data:,文本数据 data:text/plain,文本数据 data:text/html,H…...

    2024/3/28 21:01:11
  3. 分布式事务-RocketMq

    1.rocketmq版本:4.4.02.rocketmq集群部署图rocketmq消息事务流程图:4.rocketmq通过docker快速搭建,可参考:https://blog.csdn.net/leadseczgw01/article/details/106939085。5.项目代码:https://github.com/kickTec/springCloudDemo/tree/transaction-rocketmq项目结构:e…...

    2024/3/28 21:01:12
  4. canvas加载base64字符串图片 canvas转base64图片错误

    canvas加载base64字符串图片 canvas转base64图片错误碰到一个项目需求,需要将后台传过来的图片还有数据合成一张图片,(里面有个连接要转成二维码),这个时候第一下想到的肯定就是用canvas,我们先来看一下需求和步骤:生成一个背景图片 将二维码连接转base64 生成二维码图片…...

    2024/3/28 21:01:09
  5. 网络信息安全课程笔记整理(一)

    网络信息安全第一章1.1 网络安全的概念1.2 主要的网络安全威胁1.3 TCP/IP协议簇的安全问题1.4 OSI安全体系结构1.5 网络安全服务及其实现层次1.6 TCP/IP协议簇的安全架构1.7 PPDR安全模型1.8 可信计算机系统评价准则TCSEC1.9 信息系统安全保护等级划分准则1.1 网络安全…...

    2024/3/28 21:01:08
  6. 我的商业数据分析成长之路(书籍方面) | 引言

    作者:杨奉山 R语言中文社区专栏作者,R语言小学生,和我一起为成为优秀的商业数据分析师努力吧 知乎专栏:https://zhuanlan.zhihu.com/YFSbda写文章是一个很好理清思路的方式,同时也有助于提高逻辑表达能力。思来想去,决定开个专栏,将学习心得与实践都整理起来,也方便自…...

    2024/3/28 21:01:10
  7. xshell连不上虚拟机,配置了静态ip

    1.我是配置了双网卡和静态ip.配置完成之后,可以ping通着两个虚拟机ip,但是xshell连不上。 2.win10和虚拟机的防火墙都是关闭的。 其他博客上有很多方法,比ssh服务有没有开启,22端口有没有处于监听状态。还有修改配置文件的。这些都解决不了问题。 既然常规办法不能解决问题,…...

    2024/3/28 21:01:07
  8. android 获取联系人

    从SIM卡中获取联系人信息 Uri uri =Uri.parse("content://icc/adn"); String[] projection = {"_id","name", "number"}; Cursor cursor = managedQuery(uri,projection, null, null, "name"); if(cursor!=null){while(curs…...

    2024/3/28 21:01:06
  9. Base64Encoder和Base64Decoder无法使用解决办法

    原方法BASE64Encoder encoder = new BASE64Encoder();String imagestr = encoder.encode(captcha);BASE64Decoder decoder = new BASE64Decoder();byte[] bytes = decoder.decodeBuffer(imagestr);现方法import java.util.Base64.Encoder import java.util.Base64.DecoderEnco…...

    2024/3/28 21:01:04
  10. RuoYi框架配置记录——自定义mapper扫描路径

    问题描述:wechatApi下的模块为自定义的业务模块,运行时提示找不到xxxMapper类,无法AutoWired。各种百度找到了,配置扫描的地方:com.ruoyi.framework.config.ApplicationConfig.java修改@MapperScan,添加自己定义的包路径即可。注意修改:application.yml中mybatis的typeA…...

    2024/3/7 22:22:32
  11. 计算机网络-网络层协议(思维导图)以及面试题总结(tcp/ip卷一笔记)

    文章目录思维导图IP协议的特点(不可靠与无连接)IP首部为什么 IP 首部中要有总长度字段?IP 首部校验和怎么计算的,与 ICMP,IGMP,TCP,UDP 的首部校验和有什么区别与共同点?IP 路由选择的过程是怎么样的?IP 路由选择的特性有什么?IP 搜索路由表的步骤如果路由表中没有默…...

    2024/3/7 22:22:30
  12. Android 获取Contacts 联系人 姓名 号码 照片信息

    直接贴代码不解释private void getCursors() { Cursor phoneCursor = this.managedQuery( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); Cursor callLogCursor = this.managedQuery(CallLog.Calls.CONTENT_URI , new String[] { …...

    2024/3/7 22:22:29
  13. 如何写一份详细的创业项目策划书

    如何写一份详细的创业项目策划书?对于正在寻求资金的风险企业来说,创业计划书就是企业的电话通话卡片。创业计划书的好坏,往往决定了投资交易的成败。对初创的风险企业来说,创业计划书的作用尤为重要,一个酝酿中的项目,往往很模糊,通过制订创业计划书,把正反理由都书写…...

    2024/3/7 22:22:28
  14. 若依vue前后端全分离版安装 RuoYi-Vue

    若依 vue分离版安装过程 下载若依vue 分离版本 https://gitee.com/y_project/RuoYi-Vue 下载解压完成后首先用idea导入其中的ruoyi文件夹在两个yml文件中配置数据库和端口配置完成启动即可,启动成功后到这一步就算是后端安装完成了启动就可以了 后端启动成功后再次导入ruoyi-ui…...

    2024/3/20 0:10:32
  15. 在 Gitee 收获 2.5K Star,前后端分离的 RuoYi 它来了

    作为 2019 年 Gitee 上最受欢迎的开源项目,权限管理系统 RuoYi 已经在 Gitee 上获得了超过 11K 的 Star。这次作者若依推出了基于 SpringBoot + Vue + Element UI 的前后端分离版本的 RuoYi-Vue,方便有前后端分离开发需求的同学使用。项目名称:RuoYi-Vue项目作者:若依开源许…...

    2024/3/7 22:22:26
  16. 【安卓】如何使用Loaders

    Loaders已经成为获取数据库或者内容提供者中的数据的首选方案。 它可以异步的加载数据并当数据改变时及时提醒监听器。 Google不仅仅是推荐你使用Loader,而且deprecated 掉一些先前处理Cursor的方法。现在你不应该在你的项目中再使用startManagingCursor()和managedQuery()…...

    2024/3/7 22:22:25
  17. 关于android 多媒体数据库

    android 有自己的多媒体数据库,每次开机都会扫描手机里的多媒体文件,更新数据库里面的信息。下面主要说一下音乐文件的查找: cursor cursor = this.managedquery(mediastore.audio.media.external_content_uri, mediacolumns, null, null, null); 得到游…...

    2024/3/7 22:22:24
  18. RuoYi代码生成

    RuoYi代码生成RuoYi代码生成新建表进入若依,导入数据表导入数据库表选择你刚刚创建表,确定,会出现你的表填写基本信息填写生成信息点击生成代码怎么复制解压的文件到对应的目录(重点!!)完成 RuoYi代码生成 做一个笔记,怕以后忘了,还可以来看看 新建表 建表的时候一定要…...

    2024/3/4 7:41:18
  19. 2016年读书计划---人生第一个读书计划

    时间的脚步真是越走越快,不经意间我已经从师弟,到师兄,再到从学校滚蛋,再见了亲爱的同学,再见了亲爱的母校。就这样三年的研究生时光从手指间溜走,回顾昨天的昨天,都历历在目,怎么就毕业了呢,不禁感叹时光你都到哪去了,来没来得及好好感受母校就走了。很快新的一年20…...

    2024/3/4 7:41:17
  20. 【知识图谱】基于神经网络的实体识别和关系抽取联合学习

    作者丨罗凌学校丨大连理工大学博士生研究方向丨深度学习,文本分类,实体识别联合学习(Joint learning)一词并不是一个最近才出现的术语,在自然语言处理领域,很早就有研究者使用基于传统机器学习的联合模型(Joint model)来对一些有些密切联系的自然语言处理任务进行联合学…...

    2024/3/4 7:41:16

最新文章

  1. F. You Are So Beautiful (求一个序列中有多少个子序列只出现一次)

    题目链接: https://codeforces.com/contest/1883/problem/F 思想: 用set存,枚举前缀,答案加上当前序列有多少个不同的数,删去当前数,然后当前数个数减一,如果个数减为0,从mp中减去…...

    2024/3/29 4:36:25
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. C++判断点是否在三角形内部

    1.问题 判断点是否在三角形内部。 2.思路 计算向量AB和AP的叉积、向量BC和BP的叉积、向量CA和CP的叉积&#xff0c;如果所有的叉积符号相同&#xff0c;则点在三角形内部。 3.代码实现和注释 #include <iostream> #include <vector>// 计算两个二维向量的叉积 …...

    2024/3/29 4:09:49
  4. uniapp 安卓跳转到应用设置等页面

    // #ifdef APP-PLUS const platform uni.getSystemInfoSync().platform if (platform android) {var main plus.android.runtimeMainActivity(); //获取activityvar pkName main.getPackageName();var Intent plus.android.importClass(android.content.Intent); var Set…...

    2024/3/28 21:30:01
  5. 【功能实现】新年贺卡(蓝桥)

    题目分析&#xff1a; 想要实现一个随机抽取功能 功能拆解&#xff1a;题目给了数组&#xff0c;我们采用生成随机数的方式&#xff0c;随机数作为数组的索引值访问数组的值。 并返回获取到的值&#xff0c;将获取到的值插入到页面中。 document.addEventListener(DOMConten…...

    2024/3/28 14:29:35
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/3/27 10:21:24
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/3/24 20:11:25
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/3/29 2:45:46
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/3/24 20:11:23
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/3/26 20:58:42
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/3/28 17:01:12
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/3/24 5:55:47
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/3/29 1:13:26
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/3/26 23:04:51
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/3/26 11:20:25
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/3/24 20:11:18
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/3/28 9:10:53
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/3/29 0:49:46
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/3/24 20:11:15
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/3/27 7:12:50
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/3/24 20:11:13
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/3/26 11:21:23
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/3/28 18:26:34
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/3/28 12:42:28
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/3/28 20:09:10
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57