已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2012-07-13#2012-07-13#2#0#12-07-13#宋振华1 ,杨亚军2,31 ( 中国科学技术大学 计算机科学与技术学院,合肥 230026)2 ( 中国科学院 计算技术研究所,北京 110190)3 ( 中国科学院 研究生院,北京 100039)E-mail: zhsong mail ustc edu cn摘 要: 针对当前的虚拟化技术无法使各个虚拟机平等地或按特定比例地共享磁盘带宽、无法保证虚拟机间的 I / O 性能隔离的问题,基于 Xen 半虚拟化技术中的块 IO 请求处理过程,提出一种适用于 Xen 虚拟机间的磁盘 I / O 性能隔离算法-XIOS ( Xen I / O Scheduler) 算法,在通用块层调度各虚拟机的块 IO 操作( bio 结构) ,在 I / O 调度层保障延迟需求 实验结果表明该算法有效 地在虚拟机间按比例地分配磁盘带宽关 键 词: Xen; 虚拟化; I / O 性能隔离; 磁盘带宽中图分类号: TP316文献标识码:A文 章 编 号:1000-1220(2011)08-1674-05Disk I / O Performance Isolation Among Xen Virtual MachinesSONG Zhen-hua1 ,YANG Ya-jun2,31 (School of Computer Science and Technology,University of Science and Technology of China,Hefei 230026,China)2 (Institute of Computing Technology,Chinese Academy of Sciences ,Beijing 110190,China)3 (G raduate University of Chinese Academy of Sciences ,Beijing 100039,China)Abstract:Existing server virtualization technology cant guarantee that virtual machines equally or proportionally share disk I / O band- w idth and cant guarantee the I / O performance isolation among virtual machines Based on the block IO process in Xen para-virtual- ization,this paper proposed a disk I / O performance isolation algorithm among Xen virtual machines - XIOS ( Xen I / O Scheduler), w hich reschedules the bios of all virtual machines in general block layer,and guarantees latency requirement in I / O scheduler layer Experiment results show that XIOS can efficiently and proportionally allocate disk I / O bandw idth for virtual machinesKey words:Xen;virtualization;I / O performance Isolation;disk bandw idth1引 言比例地分配磁盘带宽,在 I / O 调度层改进现有的最后期限( Deadline) 调度算法保障 IO 请求的延迟需求 与其它基于时 间片或仅在 I / O 调度层实现的性能隔离方法相比,应用 XIOS 使按比例共享磁盘带宽的效果更加精确和高效当前虚拟化技术正广泛应用于动态资源分配、效用计算、云计算等领域 在虚拟化环境中,每个虚拟机可以单独地为一 个用户服务,每个用户都可以发出读写请求,共享磁盘带宽 在目前的 Xen1,6半虚拟化技术中,所有虚拟机的块 IO 请求 都被提交到物理设备的请求队 列,在 I / O 调 度 层 仍 使 用 Linux 中的 I / O 调度算法 这些调度算法并不区分请求是由 哪个虚拟机发出的,若某个虚拟机在某段时间内读写请求过 多,会影响其它虚拟机的请求处理另一方面,用户必然不希望由于其它用户的读写操作影 响到自己的 IO 请求响应速度,即需要满足各个虚拟机的 SLO( service level objective) 或者 QoS ( quality of service) ,主 要包括吞吐量( Throughput) 和延迟( Latency) 需求本文基于 Xen 中块 IO 的处理过程,设计并实现一种 Xen 虚拟机间按比例地共享磁盘带宽的方 法-XIOS ( Xen I / O Scheduler) 调度算法,同时兼顾各个请求特定的延迟需求 通2相关工作几乎所有的磁盘 I / O 性能隔离算法都使用若干队列,各个进程或虚拟机实例的块 IO 请求先加到各自队列中,然后根 据某些规则,提交这些队列中的若干请求,达到在各个实例间 按一定比例地共享磁盘带宽的目的如2中总结的,通常性能隔离方法可以分为两类 一是 单纯地按比例的分配带宽方式,这类方法好处是可以做到磁 盘带宽的公平分配,而且是 w ork conserving 的,即只要有请 求在等待处理,资源就不会空闲 但也有几个缺点: 首先需要 一个存储系统性能模型来估计各类 IO 请求的服务时间,而一 个存储系统的性能模型是很难得到的,需要复杂的数学模型 和大量的实验数据,而且也不具备通用性; 其次将吞吐量控制2012-过0在7通-用块1层3调#度#各#虚#拟#机#的#块#I#O #操#作(#bi#o 结#构2)0实1现2按-0和7延-迟1控3制#紧#耦#合#在#一起#2,#缺0#乏1灵2活-性0 所7以-这1类3方#法#的效#果#并不好另一类是基于反馈的方法,通过探查磁盘带宽的空闲情 况,避免第一类中对精确的存储系统性能模型的依赖,而且这 种方法将延迟保障和吞吐量保障松耦合,更加灵活2提出一种两层调度架构,其中低层是一个基于反馈 的请求调度器,用于满足延迟需求; 高层是一个基于 credit 的 速度控制器,用于平均分配磁盘带宽 不过尽管延迟保障很重 要,但是如果像这样通过复杂的机制来保障,可能会影响到 I / O 调度与 IO 请求处理的性能传统上虚拟化技术中只关注 CPU 时间片的调度,而忽略 I / O( 包括磁盘和网络) 调度 3中研究了 Xen 中的调度器, 包括目前的 credit-based 调度器和早期的 SEDT 调度器 4 中提出一个虚拟机间按比例共享磁盘带宽的调度器 VM - PSQ,基于调用令牌和时间片思想,实现在 I / O 调度层 对于 CPU 调度来说,很自然地应该考虑时间片,但是对于磁盘 I / O 来说,由于寻道占用了一部分时间,使得单位时间内完成的 IO 请求大小并不相同,所以更精确的分配方法还是应以完成 的 IO 请求大小作为度量5中提出一个虚拟 I / O 调度器 VIOS,不仅考虑虚拟机 之间、还考虑每个虚拟机内的进程间的隔离 这种方法虽然看 起来比 较 高 效、精 确,但 是 并 不 适 合 Xen 在 Xen 半 虚 拟 化1,6中,每个虚拟机的 IO 请求在传递给特权虚拟机处理 前,已经在虚拟机内的 I / O 调度层对请求做了调度,在各个进 程间做了一定的性能隔离 如果又过多地关注虚拟机内进程 间的性能隔离,对隔离效果的提升并不明显,而且还会影响 I / O 性能为 dom0 必须通过授权才能访问 domU 的页面,所以 domU 需要将 request 结构中的每个内存段授权给 dom0 访问,因此环 请求结构中需要记录每个段的授权引用号图 1 Xen 中块 IO 处理过程Fig 1 Block IO process in Xen在 dom0 中首先通过一个伪的后端( back-end) 驱动从 I / O 环缓冲区中获取环请求结构,映射其中的各个段到自己的 地址空间,然后将这些请求分解为对于真正物理设备的块 IO 操作( bio 结构) ,最后提交给真实设备驱动 dom0 同样通过 I / O 环缓冲区和相应的事件通道,将请求处理后的响应返回 给 domU由这些 bio 结构中的 private 字段可以得到后端块接口结 构,在后端块接口结构中,有一个 domid 字段,描述所连接的 domU 的 ID,由此在 dom0 的通用块层,通过 bio 结构可以知 道该 bio 来自于哪个虚拟机3Xen 及其块 IO 请求的处理Xen1,6最初是由英国剑桥大学开发的一个开源的虚拟4XIOS 算法设计与实现机,目前已在学术界和工业界得到广泛支持 早期的 Xen 是一种半虚拟化技术,需要修改客户操作系统 在 Xen 3 0 以 后,基于 Intel VT-x 和 AM D-V 等支持虚拟化的硬件技术,实 现了对全虚拟化的支持 考虑到硬件平台的普遍性,本文的研 究仍基于 Xen 的半虚拟化技术Xen 中虚拟机监视器( VM M ) 又称为 Hypervisor,虚拟机 称为域( domain) Xen 的众多域中有若干个特权域用来辅助 Xen 管理其它的域,称为 domain 0 ( dom0) ,提供相应的虚拟 资源服务,特别是对 I / O 设备的访问 其它的域称为 domain U( domU) Xen 中通过事件通道机制实现域之间、Hypervisor 与域之间的异步通信,作用与实现方法都类似于 Linux 中的 信号机制 Xen 通过页面授权访问机制实现域之间、Hypervi- sor 与域之间的内存页面共享,只有经过内存区域的所有者域 授权后,其它域才能够访问该区域Xen 中设备驱动采用一种分离设备模型,如图 1 所示 各 domU 没有真正的设备驱动,仅有一个伪前端( front-end) 驱 动 上层应用程序发出的读写操作,经过文件系统各层转化为 对前端驱动的块 IO 请求( request 结构) domU 把它配置成一4 1 总体设计除了在第 2 部分中已经分析的问题外,现有的各种性能 隔离方法,多实现在 I / O 调度层( 如24等) ,而在 Linux 中提交 bio 结构到块设备请求队列时7,首先检查该 bio 结构 能否合并到已有的请求( request 结构) 中,以尽一步减少寻道 时间,否则就为该 bio 新分配一个请求结构,插入到请求队列 中,因此在 I / O 调度程序中,调度的只是那些无法合并到已有 请求结构的 bio,相当多的合并到已有请求结构中的 bio 无法 被调度,从而使得性能隔离的效果大打折扣 为此本文提出的 XIOS 算法,在通用块层调度各虚拟机的 bio 结构此外,在通用块层进行调度还有两个好处 一是 bio 操作 的扇区是连续的,可以由 bio 结构中的 bi_size 字段得到该 bio 所操作的扇区个数,而请求结构的大小很难确定,因此在通用 块层调度 bio 结构比在 I / O 调度层调度请求结构,精确度更 高 二是如第 3 部分所述,由 dom0 端处理的 bio 结构可以得 到对应的虚拟机 ID,方便进行调度,而在 I / O 调度层,一个请 求结构可能包含来自不同虚拟机的 bio种特殊的 环请求结构 并放置到一个基于页面授权访问机至于延迟需求的保障,可以借用 Linux 中的最后期限或2制0的1I / O2环-缓0冲7区-中1,然3后#通#过#事#件#通#道#通#知#dom#02处0理1 因2-0预7期-调度1算3法#的#思#2想#07#1 #最2后#-期#0限7调-度1算3法#使#用#四#个#队#列#,#其中两个分别包含读写请求,按起始扇区号排序; 另两个队列则按它们的 最后期限 排序,引入后两个队列是为了避免请 求饥饿,满足请求的延迟需求 预期算法是对最后期限算法的 改进,增加了一些启发式规则本文描述的 XIOS 算法,就是在通用块层调度各虚拟机 的 bio,保证虚拟机按比例地共享磁盘带宽; 在 I / O 调度层对 最后期限算法加以修改,仅使用两个最后期限队列,保障延迟 需求,本文中称这一修改过的、仅使用最后期限队列的最后期 限算法为 纯最后期限 调度算法( Absolute Deadline Schedu- ler,ADS) 这样也可以将吞吐量和延迟控制松耦合 由此可 以得到 XIOS 调度器在整个系统中的结构关系,如图 2 所示, 它由两部分组成: 通用块层的 XenFQ( Xen Fairness Queueing, Xen 公平队列) 和 I / O 调度层的 ADS各个虚拟机产生的 bio 添加到它们各自的 bio 队列中; De-Queue,将 bio 从所在的队列中出队,调用请求队列的 make _ request_fn 方法加到请求队列中; Feedback,一个磁盘信息反 馈模块,监测磁盘的拥塞情况,用于确定每轮可以发出的总的 bio 大小下面详细描述 XenFQ 中各个子模块的设计与实现4 2 XenFQ 的设计与实现4 2 1InQueue 子模块将系统中所有块设备、虚拟机以及 bio 结构组织为一个三级链表,如图 4 所示: 第一级为各个块设备; 第二级为所有 对该块设备有 IO 请求的虚拟机; 第三级为虚拟机对该块设备 产生的 bio 对于前两级链表,因为需要经常地根据 bio 结构 查找对应的块设备和虚拟机,所以组织成哈希链表,便于快速 查找; 对于第三级链表,所有的 bio 结构都是先进先出的,不 涉及查找,只需要按普通的双向循环链表组织即可 之所以没 有采用像红黑树( 比如 CFS 进程调度、CFQ I / O 调度中所用 的) 这类对于选择一个对象非常高效的结构,是因为在每一 轮时间间隔内,并非只选择一个虚拟机提交它的 bio,而是提 交每个虚拟机中的一部分 bio,只是总量一定的情况下,各虚 拟机提交的 bio 大小要符合一定的比例图 2 XIOS 调度器Fig 2 XIOS SchedulerADS 比较容易实现,只需对最后期限调度算法加以修改 比较复杂的是 XenFQ 的设计 各虚拟机的 IO 请求传递到 后端之后,dom0 将它们构建为对真实物理设备的 bio 结构并 准备提交( 通过 submit_bio) ,此时 dom0 的通用块层处理所有 虚拟机产生的 bio 结构( 包括 dom0 本身的) 根据前面的分 析,此时先将 bio 缓存起来,加到各虚拟机的 bio 队列中; 然后图 4 三级( 块设备、虚拟机、bio) 描述符Fig 4 Three layers of descriptors( block device,virtual machine,and bio)在这些对象中,还要有反映共享比例的字段 在每个虚拟 机描述符中记录该虚拟机享用磁盘带宽的权重,块设备描述 符中记录当前所有对该块设备有 IO 请求的虚拟机的权重之 和 在每一轮时间间隔内,可以发出的总的 bio 大小,乘以这 两个权重值之比,就是本轮该虚拟机可以向该块设备所发出 的 bio 大小第一级链表中的每个块设备描述符( disk_desc_t) ,包括 块设备对象( device) 、连接块设备哈希表头或其它块设备描 述符的哈希链表项( disk_list) 、连接对该设备有 IO 请求的虚 拟机描述符的哈希表头( domU _head) 、读写该块设备的所有 虚拟机的权重之和( w eights) 、提交被缓存的 bio 的内核线程( diskd) 块设备描述符链表头由 disk_head 描述,在 dom0 初图 3 XenFQ 各子模块Fig 3 Sub-modules of XenFQ每隔一段时间,按一定比例地提交各个虚拟机 bio 队列中的始化所有物理块设备之前,定义 disk_head 为避免块设备描一部分 bio,以此实现各虚拟机按比例地共享磁盘带宽20X1en2FQ-模0块7包-括133个#子#模#块(#如#图#3#) : #InQ#ue#ue2,负0责1将2-0述7符-的频1繁3创#建#、#撤2消#0,#1每#2当#-向#系0统7注-册1一3个#新#的#块#设#备#后#,#就分配并初始化其描述符,直到该块设备从系统中撤消时,才从块设备描述符链表中删除其描述符第二级链表中的虚拟机描述符( domU _desc_t) 包括虚拟 机 ID( domid) 、享有该块设备的磁盘带宽的权重( w eight) 、链 接虚拟机描述符链表头或其它虚拟机描述符的哈希链表项 ( domU_list) 、bio 描述符的链表头( bio _read / w rite,区分读操 作与写操作) 与块设备描述符存在于块设备的整个生命周期不同,创 建一个虚拟机后并不马上创建其虚拟机描述符,这主要是考 虑到可扩展性的问题 现在一个大型的系统包含上百块磁盘、 运行几百个虚拟机,若每个虚拟机描述符存在于虚拟机的整 个生命周期,会占用许多系统内存空间 所以当添加一个 bio 时先从块设备描述符的虚拟机描述符链表中查找对应的虚拟 机的描述符,如果找到,就把 bio 加到其 bio 链表中; 否则就先 创建虚拟机描述符,加到块设备描述符的虚拟机描述符链表 中,更新其中的权重和 同样当提交若干 bio 后,检查所在的 虚拟机描述符的 bio 链表是否为空,若为空,就撤消该虚拟机 描述符,更新块设备描述符中的权重和最后第三级中的 bio 描述符( bio _desc_t) ,按先进先出的 顺序,链接所有该虚拟机对该块设备的 bio 结构thisC = lastC; 如果 todo dow n,表示磁盘比较空闲,为了提高磁盘利用率,可以这样提高 C 值: thisC= lastC dow n / to-do; 相反如果 up todo,则表示磁盘拥塞,可以这样减少 C值: thisC = lastC up / todo4 2 3 DeQueue 模块diskd 线程在每轮时间间隔内,扫描访问该块设备的所有 虚拟机描述符,根据 Feedback 模块中确定的本轮可以提交的 总的 bio 大小,以及各虚拟机的权重值与总的权重和之比,确 定每个虚拟机在本轮可以提交的 bio 大小,然后扫描各虚拟 机描述符的 bio 链表,提交相应大小的若干 bio也就是说,并不是每个虚拟机都有一个线程提交其 bio, 而是由与每个块设备相关的 diskd 线程统一提交对该块设备 有读写请求的各个虚拟机的 bio,这样可以避免在通用块层是 多线程并发、而到了 I / O 调度层则是单线程处理的问题,即避 免了 I / O 调度层成为系统的性能瓶颈,有利于系统性能的可 扩展性实验分析5实验平台硬件、操作系统环境和虚拟机配置如表 1 所示表 1 实验平台Table 1 Test Bed4 2 2Feedback 子模块具体实现中,每次提交 bio 的时间间隔可以是一个固定值,也可以根据某种启发式或反馈机制调整时间间隔 提交的 总的 bio 大小应能充分利用磁盘性能 ( 做 到 w ork-conser- ving) ,但又不使磁盘频繁拥塞 可以根据磁盘请求队列的拥 塞情况,采用基于反馈的方法计算每次可以提交的请求大小比如根据磁盘性能设置一个初始 C 值,在每轮提交之 后,根据上一轮提交的 lastC、磁盘请求队列的拥塞阈值 up( 请 求队列中 nr_congestion_on 字段) 、非拥塞阈值 dow n( nr_con- gestion_off 字段) 、待处理请求数 todo ( in_flight 字段) ,计算属性值计算机CPU 内存 硬盘操作系统dom0Dell Voxtro 220s SeriesIntel Core 2 Duo 2 93GHzDDR2 2 0GBSeagate 320GB /16M B / SATA2 /7200Fedora 11 i686 SM P( Linux 2 6 29 4)Xen 3 0 4,Linux 2 6 16 6 xen0,memory= 512MXen 3 0 4,Linux 2 6 16 6 xenU,memorydomU = 256 M 本轮的 thisC 值 如果 dow n = up,表示充分利用 = todo实验中运行三个虚拟机,借鉴8中的方法,让这三个虚了磁盘性能,并且也不拥塞,可以仍然使用上一轮的 C 值:( d) AS 调度性能( d) Performance of AS( a) XIOS 调度性能( a) Performance of XIOS( c) DS 调度性能( c) Performance of DS( b) CFQ 调度性能( b) Performance of CFQ图 5Fig 5拟机开始时都运行同样的 I / O 任务,有同样的权重; 然后对其I / O 负载通过 iozone9产生,在每个虚拟机上运行 iozone中一个虚拟机加大 I / O 负载,测量它们共享磁盘 I / O 带宽的-i0 -i1 -r1 -s 2g 命令( 称为例程一) ,即对各自的虚拟块设备公平性; 再加大其中一个虚拟机的权重,验证按比例地共享磁测试一遍读 / 写性能 每个虚拟机执行一遍该命令所用的时间2盘0带1宽2的效-果07-13#2012-0达7几-十1秒3,可#以#每#隔2#几0秒#1采#2样#-一#0次7各-虚1拟机3的#I#/ O#性#能# 本#实#验中,每一轮采样 7 次数据,采样间隔为 3 秒 仅分析读操作的性能上页图 5( a) 至图 5 ( d) 为分别采用 XIOS、CFQ、最后期 限( DS) 、预期( AS ) 调度算法时,三个虚拟机的 I / O 性能曲 线 可以看出,应用最后期限算法,由于维护着两类队列,性能 最差; 应用预期算法,三个虚拟机的 I / O 性能差异比较大; 应 用 CFQ 算法,I / O 性能和公平性都较好; 但是明显地,应用 XIOS 算法,公平分配磁盘带宽的效果更好,虚拟机间的 I / O 性能差异更小将 VM3 恢复与其它两个虚拟机执行同样的工作负载,但是将 VM3 的权重调整为原来的两倍 图 7 为采用 XIOS 算法 时,三个虚拟机的 I / O 性能曲线 可以看出,VM3 的性能明显 高于另外两个虚拟机,而且性能比也接近于2 证明XIOS 在 按比例地分配磁盘带宽方面做得更好( 可以对比图5( b) 采用 CFQ 时的曲线) 6结束语本文基于 Xen 中的块 IO 请求处理过程,提出了一种在虚拟机间实现 I / O 性能隔离的算法: 在通用块层缓存各个虚 拟机产生的 bio,在每次时间间隔内,根据各个虚拟机的权重, 按比例地提交一定大小的 bio 在虚拟机间按比例共享磁盘 I /O 带宽方面,比起其它基于时间片或在 I / O 调度层的性能隔 离方法,更加精确和高效 同时在 I / O 调度层修改最后期限调 度方法,利用其最后期限队列,保障延迟需求References:1 Barham P,Dragovic B,Fraser K,et al Xen and the art of virtual- izationC In Proceedings of the 19th ACM SOSP,October2003: 164-1772 Zhang Jian-yong ,Anand Sivasubramaniam,Wang Qian,et al Storage performance virtualization via throughput and latency con- trolC Proceedings of the 13th IEEE International Symposium on M odeling ,Analysis,and Simulation of Computer and Telecom- munication Systems ( M ASCOTS05) ,20053 Diego Ongaro ,Alan L Cox ,Scott Rixner Scheduling I / O in vir- tual machine monitorsC Proceedings of the Fourth ACM SIGP- LAN / SIGOPS International Conference on Virtual Execution Envi- ronments,Seattle,Washington,USA,M arch 2008: 1-104 Dong-Jae Kang,Chei-Yol Kim,et al Proportional disk I / O band- w idth mangement for server virtualization enviromentC Proceed- ings of the 2008 International Conference on Computer Science and Information Technology,Washington,DC,USA,2008: 647-6535 Seetharami R Seelam,Patricia J Teller Virtual I / O scheduler: a scheduler of schedulers for performance virtualizationC Pro- ceedings of the 3rd International Conference on Virtual Execution Environments,San Diego ,Califo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 事业单位法律岗面试易错题题库试卷及参考答案 2026
- 事业单位教育岗面试历年真题题库试卷及参考答案2026
- 事业单位人力资源岗面试全真模拟试卷及参考答案202
- 事业单位人力资源岗易错题题库试卷及参考答案
- 2026年湖南工程职业技术学院高职单招笔试职业适应性测验历年参考题库含答案解析
- 2026年湖南交通职业技术学院高职单招笔试英语历年参考题库含答案解析
- 2026年海南软件职业技术学院高职单招笔试英语历年参考题库含答案解析
- 2026年浙江汽车职业技术学院高职单招笔试英语历年参考题库含答案解析
- 2026年河北青年管理干部学院高职单招笔试职业技能测验历年参考题库含答案解析
- 2026年江西水利职业学院高职单招笔试英语历年参考题库含答案解析
- 2026中国邮政联合校园招聘笔试参考题库(含答案解析)
- 宁夏吴忠市盐池县2026年社区工作者招聘考试试卷-含答案解析
- (一模)嘉兴市2026-2027学年第一学期高三教学质量检测语文试卷(含答案)
- 2026中国洗衣干衣行业市场现状需求分析投资布局发展策略研究文献
- 2027年湖北交通投资集团有限公司秋季校园招聘131人笔试备考题库及答案解析
- 2026山东青岛水务集团有限公司招聘笔试历年参考题库附带答案详解
- 2026年党支部基层总结报告
- 特香型白酒的讲解
- 中国电信理工综合类笔试题库
- T∕CCEAS008-2026 建设工程造价咨询成果文件质量标准
- 中央资金国债管理办法
评论
0/150
提交评论