-
摘要:
近年来存储行业经历了巨大的变革,以固态硬盘(solid state drive, SSD)为代表的半导体存储设备迅猛发展,在性能上显著超越了通过磁头移动寻址的机械硬盘(hard disk drive, HDD). 目前支持SSD的2种协议主要包括非易失性内存主机控制器接口规范(nonvolatile memory express, NVMe)协议与串行SCSI(serial attached small computer system interface, SAS)协议,即SAS. NVMe是专为SSD设计的高性能存储协议,能够很大限度地发挥SSD的性能;而SAS协议则充分考虑数据中心的需求,在提供高可靠性与高可扩展性的同时,兼顾了系统性能与成本的平衡. 相对于日益增速的存储介质,针对慢速存储设备所设计的软件栈在一次I/O过程中所耗费的时间开销愈发显著. 针对该问题学界及工业界都相继提出了众多解决方案,例如Intel提出的高性能存储开发包(storage performance development kit, SPDK)通过将设备驱动实现在用户空间,并采用轮询感知I/O完成等方式大幅度缩短了NVMe SSD对应用程序的响应时间,极大地提升了整个系统的整体性能. 然而之前的研究工作针对SAS SSD存储软件栈的优化非常有限,为此在用户空间实现了针对SAS SSD的软件栈优化. 实验结果表明,该优化能够有效缩短存储设备对应用程序的响应时间,提高应用对存储设备的访存效率. 此外,为了准确评估I/O栈中存储设备的时间开销,硬件性能测试工具HwPerfIO被提出,能够消除大部分软件开销的影响以测得更加准确的存储设备性能.
Abstract:For the past few years, the storage industry has undergone tremendous changes. Semiconductor storage devices, like solid state drives (SSDs), have flourished and are able to completely outperform traditional hard disk drives (HDDs), addressing data by moving magnetic head. Nowadays, the mainstream protocols supporting SSDs are NVMe and SAS. NVMe is a high-performance storage protocol designed specifically for SSDs that can maximize the performance of SSDs; while the SAS protocol fully considers the requirements of data centers, providing high reliability and high scalability while considering the balance between system performance and cost. Compared with the increasingly fast storage media, the time overhead of the software stack designed for slow storage devices in an I/O process is becoming increasingly significant. To address this issue, numerous excellent works have been proposed by academia and industry. For example, Intel’s SPDK (storage performance development kit) has greatly shortened the response time of NVMe SSD to applications by implementing device drivers in user space and polling I/O completion, extremely improving the performance of the entire system. However, previous research on the optimization of SAS SSD storage software stack is very limited. Therefore the SAS software stack optimization for SSD is implemented in user space. Experimental result shows that this optimization can effectively improve the data access efficiency with applications and storage devices. Besides, aiming to accurately evaluate the time cost of storage devices in I/O stack, a hardware performance testing tool HwPerfIO is proposed, which can eliminate the impact of most software overhead to measure the more accurate storage equipment performance.
-
Keywords:
- SSD /
- HwPerfIO /
- SAS protocol /
- I/O stack /
- user space driver
-
近年来,随着无线网络技术的快速发展和无线设备的大规模部署,无线感知技术受到了国内外研究学者的高度关注,并且被广泛地应用在室内定位[1]、动作识别[2]和人数统计等各个领域. 作为人数统计的主要方式之一,人流量计数是公共场所实施科学人数管理的关键手段. 通过实时监测特定空间区域内的人流量,能够有效预防因人群拥挤而引发的安全隐患.
为了实现高精度的人数统计,研究人员相继提出了基于通道闸机、计算机视觉和无线信号的计数方法[3]. 在无线信号领域,WiFi以其普适性强、功耗较低、保护隐私等特点脱颖而出. 发送端发射出的WiFi信号会经过多种路径,包括直线传播、通过物体反射以及经过衍射等,最终到达接收设备,形成多径传播的信号. 在WiFi标准中,通常使用接收信号强度指示(received signal strength indicator,RSSI)和信道状态信息(channel state information,CSI)来描述无线信道. RSSI代表了多条传输路径上信号叠加的总和,无论在传输过程中哪条路径上的信息发生变化,接收端接收到的RSSI值都会随之相应变化[4]. 因此RSSI很容易受到多径和环境变化等因素的影响,基于RSSI技术的人流量计数在精度上始终难以得到较大突破.
CSI信号携带了通信链路中各种基本属性,与WiFi无线信道的其他信息不同,它具有更高的敏感度和更精细的分辨率. 这种信号能够描述信号传输过程中产生的振幅衰减、相位偏移和时延等变化情况[5]. 由于IEEE802.11n系列通信协议及其之后的无线局域网协议采用了正交频分复用(orthogonal frequency division multiplexing,OFDM)和多输入多输出(multiple in multiple out,MIMO)技术[6],可以很容易地在商用WiFi设备中获取CSI信息. 经过从CSI信号中提取出适用于不同人数的高鲁棒性特征信号后,与机器学习算法相融合,可以构建人流量监测模型,从而实现高度准确的人流量计数. 然而,当前这类方法面临着2个主要问题.
最初,很多研究都倾向于从商用WiFi的CSI信号中提取时域特征,以供后续的识别工作使用. 然而,商用WiFi的CSI信号不仅仅包括振幅信息,还包含了相位信息. 因此,需要对这2种信息进行分析验证,确定哪种信息更能够准确地反映人体的存在和移动. 此外,目前基于CSI的人流量计数主要关注人群稀疏的情况,未能实现人群密集时的连续人流量监测. 针对以上问题,本文提出了一种基于WiFi信道特征的人流量监测方法Wi-HFM,该方法通过商用WiFi设备获取不同人数对应的CSI信息,利用解卷绕和线性相位校正对原始数据进行预处理,再采用巴特沃斯滤波器降噪,使用主成分分析(principal component analysis,PCA)算法对特征进行降维. 最后把时域上的相位差输入到卷积长短时深度神经网络(convolutional, long short-term memory, deep neural network,CLDNN)中进行人数的分类并生成识别结果. 本文的主要贡献有3个方面:
1)针对现有WiFi设备中所获取的CSI中包含振幅和相位2种信息的情况,本文利用传统特征的方式比较CSI中振幅信息和相位差信息的有效性. 验证了时域上的相位差信息优于振幅信息,用以表征不同人数对无线信号的影响.
2)针对当前基于CSI技术的人流量计数方法在人群密集场景下应用受限的问题,本文加入了连续性人流量监测,通过标准差和方差提取连续性人流数据中的有效数据包,来处理收发装置视距内的多排人群数据.
3)在人流量监测模型构建的阶段,本文采用了CNN(convolutional neural network)以提取CSI的空间特征,同时采用LSTM(long short-term memory)提取信号的时域特征. 通过这种方法,成功构建了CLDNN模型用于监测人流量的变化.
1. 相关工作
1.1 人群计数
人群计数是对特定空间内的人数进行统计. 早期人群计数通过传统的计算机视觉技术来提取行人特征,然后采用目标检测或回归的方法来获得图像或视频中的人群数量[7]. 例如,Lin等人[8]提出了一个多方面注意力网络,以增强transformer模型在空间局部上下文编码中进行人群计数的能力,优化了人群图像中频繁出现的显著尺度变化问题. 目前基于计算机视觉的人群计数主要依赖于有限的RGB图像数据,而Liu等人[9]则采用了融合光学与热信息的策略来实现对行人的识别. 实验结果证明了这一方法在多模态(例如RGBT和RGBD)人群计数方面的有效性,能够在各种不受限制的场景中探测到可能存在的行人. 虽然摄像机安装方便,但是现有的计算机视觉方法大多需要收集大量的图像或视频数据,这引发了对于数据隐私的担忧. 为了克服一些场景下所面临的隐私保护问题,基于传感器技术和无线信号技术的人群计数获得了越来越多的关注.
基于传感器的人群计数将选定的传感器(如红外传感器、深度传感器和微波传感器等)安装在需要监测的区域内,通过计算和分析传感器数据,识别当前区域内的人数. Liu等人[10]采用了成对配置的红外距离传感器,以监测公交车上的乘客数量,其实验结果实现了95%的精确度. 文献[11]提出了一种基于置于场景顶部的Kinect传感器的新型算法,通过在深度图像中检测人们的头部来实现其轨迹跟踪. 利用SVM分类器来区分是否为人类的头部,有效解决了拥挤场景下的人群遮挡问题. 然而传感器数据精度受到其技术特性和安装位置的限制,同时一些传感器需要连续运行,这可能会导致不小的能耗,尤其在长时间监测人群的情况下.
基于无线信号的人群计数方法主要依托于分析人体对无线信号(如雷达、WiFi等)的影响,以统计人群数量. Choi等人[12]提出了一种基于IR-UWB(impulse radio ultra-wideband)雷达的行人计数系统,该系统利用2个配备窄波束宽度天线的雷达传感器,在路径中形成2个不可见的电子层,用于统计某个区域中行走的人数. 文献[13]提出了CrossCount,它使用单个WiFi链路来估计区域的人数. 其主要思想是处理WiFi链路阻塞间隔,而不是依赖于从RSSI值中提取的统计特征. 在新冠病毒大流行的背景下,Sharma等人[14]利用CSI幅度的频率来测定特定区域内的人数分布,以维持社交距离. 实验证明该系统能够有效监测电梯内人数是否超出新冠肺炎的安全限制,其准确率高达97%,具有高鲁棒性和良好的可扩展性.
1.2 人流量计数
人流量计数是对通过一个特定通道的人数进行统计. 目前,人流量计数领域的方法相对有限,主要分为2类:通道闸机和无线信号的计数方法. 通道闸机通过在出入口安装闸机(例如转门、门禁闸、电子闸机等)来实时感知人员的进出情况. 文献[15]利用8组红外传感器对闸机通道进行物体检测,并应用ARIMA模型分析历史闸机通道的客流量数据,以预测不同时间段的客流情况. 然而,在高峰时段通道闸机的处理速度较为缓慢,这会导致人们排队等候和时间延误的情况,从而限制了进出特定区域的人员流动.
随着无线网络技术的兴起,人们逐渐开始探索以无线信号实现人流量计数的可能性,WiFi因其低成本、易于部署等优势得到广泛应用. 研究初期,人们利用RSSI来实现人流量计数. 其原理是根据信号强度的变化来估计出监测区域人员的数量. 文献[16]使用支持向量机来探究RSSI与人数之间的关系,但是实验结果显示,仅达到77%的准确率,因此在实际应用中存在较大局限性. CSI相对于RSSI具有更高的信号分辨率,能够提供更详细的信道状态信息,从而在一定程度上减小信号强度波动对应用的影响. Yang等人[17]提出了一种名为Door-Monitor的访客计数系统,该系统对相位差序列进行了短时傅里叶变换,并在此基础上应用卷积神经网络建立计数模型. Zhou等人[18]利用人类通过WiFi设备所引起的多普勒效应,提出了WiFlowCount. 该方法利用CSI信号构建多普勒频移的频谱图,根据频谱图中的功率分布检测人流. 但是该方法需要个体之间保持较大的间距,因此其实际可行性受到限制.
2. Wi-HFM模型概述
2.1 WiFi人流量监测原理
在利用WiFi信号来估计人流量时,需要建立CSI信号与人数之间的映射关系. 在监测环境中,不同的人数可能导致CSI信号在传播过程中发生不同程度的反射和衍射,从而产生多径效应. 当有N条传播路径在时刻t到达接收端时,信号的理想信道频率响应[19](channel frequency response,CFR)表达式为:
H(f,t)=e−j2πΔftN∑k=1ak(f,t)e−j2πfτk(t), (1) 其中f为载波频率,e−j2πΔft表示由载波频移导致的相位差,ak(f,t)则表示第k条路径上的衰减以及初始相位[20],e−j2πfτk(t)表示第k条路径上的相位偏移,其时延为τk(f,t).
在无线通信领域,多径效应包括静态路径和动态路径2个部分[21]. 静态路径被看作是与人体影响无关的部分,可用Hs(f,t)来表示. 与此不同,动态路径被视为受到人体影响的部分,可以用Hd(f,t)来表示:
Hd(f,t)=∑k∈Pdak(f,t)e−1λj2πdk(t), (2) 其中Pd为所有动态路径. 结合式(1)(2)可得总的信道频率响应为
H(f,t)=e−j2πΔft(Hs(f,t)+∑k∈Pdak(f,t)e−1λj2πdk(t)). (3) 通过上述公式的推断,信道频率响应包含了有关CSI信号的全部信息,呈现出与人数变化相互关联的趋势,从而证实了CSI人流量监测的可行性. 在窄带平坦衰落信道中,假设发送信号向量为 \boldsymbol{x} ,接收信号向量为 \boldsymbol{y} ,那么有[22]
{\boldsymbol{y}}={\boldsymbol{Hx}}+{\boldsymbol{z}}\text{,} (4) 其中 \boldsymbol{z} 为环境噪声向量, \boldsymbol{H} 为信道矩阵. 根据IEEE802.11协议标准,CSI被划分为30个子载波,则 \boldsymbol{H} 表示为
{\boldsymbol{H}}=\left({\boldsymbol {H}}_{1},{\boldsymbol {H}}_{2},… ,{\boldsymbol {H}}_{30}\right). (5) 对于单个子载波,CSI的形式为:
{\boldsymbol {H}}_{i}={\boldsymbol {h}}_{i}{\mathrm{e}}^{\mathrm{jsin}{\theta }_{i}}\text{,} (6) 其中 \left|{\boldsymbol {h}}_{i}\right| 表示第i个子载波的振幅信息, {\theta }_{i} 为第 i 子载波的相位信息. 由式(6)可知CSI是对每条传输链路中的每个子载波的估计,当有人进入收发装置视距的位置时,CSI信号中的振幅和相位信息会出现变化,因此可以通过建立人数与CSI数据信息之间的关联来实现人流量的监测.
2.2 Wi-HFM模型工作机制
如图1所示,Wi-HFM系统的工作流程可划分为4个关键阶段,包括数据获取、数据处理、特征提取和分类识别. 在数据获取阶段,采用商用WiFi设备建立了AP(access point)模式,包括1个发送天线和3个接收天线,通过组织人员进行人流量模拟实验以获取多组单排人流和多排人流数据. 在数据处理阶段,充分利用信道状态信息测量值中的细粒度信息,分别对振幅信息和相位信息进行预处理,包括清洗数据、选择天线对和提取数据包等.
在特征提取阶段,为了获取最优的特征信号以精确地描述人数对无线信号的影响,本文采用主成分分析对从时域和小波域中提取的特征信号进行了降维处理. 通过分析特征信号在时域和时频域上的效果,最终确定了时域中的相位差作为主要的识别特征信号. 在分类识别阶段,使用深度学习来探索CSI数据中的潜在特征. 本文选择了卷积神经网络以有效地提取信号的空间特征,以及循环神经网络来提取信号的时域特征,从而构建了一个名为CLDNN的人流量监测模型.
3. Wi-HFM的设计与实现
3.1 CSI数据处理
通过商用WiFi设备收集到的CSI信号中主要包含振幅和相位2种物理信息,但是原始CSI数据中掺杂了大量的异常值以及噪声,需要对其分别进行预处理,从而为后续特征信号的确立提供优质数据集. 这2种物理信息的预处理过程十分类似,都包括定位天线对、定位数据包和数据清洗等步骤,本文将以相位的预处理为例,以此阐述CSI信号预处理的总过程. 传统的CSI采集工具[23]所测得的子载波 i 的相位信息,可以被表达为
{\hat{\phi }}_{i}={\phi }_{i}+2\pi \dfrac{{k}_{i}}{{N}_{f}}{\alpha }_{i}+{\beta }_{i}+Z\text{,} (7) 其中 {\hat{\phi }}_{i} 表示原始相位, {\phi }_{i} 为真实相位, {k}_{i} 是第 i 路子载波的索引值, {N}_{f} 为FFT点数, {\alpha }_{i} 是时钟同步误差, {\beta }_{i} 是载频同步误差, Z 是噪声. 根据式(7),因设备之间时间不同步,会带来时钟同步误差和载频同步的残余误差. 尽管这些残余误差对CSI的振幅影响较小,在大多数情形下或可忽略,然而对于CSI的相位而言,却会有较为显著的影响,导致了相位偏移的产生.
为了获取准确的相位信息,本文通过解卷绕[24]和线性相位校正[25]对相位进行预处理. 解卷绕旨在对相位进行修正,将子载波原本的相位范围进行补偿和延拓. 线性校准算法则致力于消除由线性相位误差如载波频偏(carrier frequency offset,CFO)和符号同步偏移(symbol timing offset,STO)引起的随机相位偏移,因此线性相位校正的主要目标在于削弱式(7)中α和β所产生的影响. 定义关键变量 \mu 和 \nu :
\mu =\dfrac{{\hat{\phi }}_{i,n}-{\hat{\phi }}_{i,1}}{{k}_{n}-{k}_{1}}=\dfrac{{\phi }_{i,n}-{\phi }_{i,1}}{{k}_{n}-{k}_{1}}-\dfrac{2{\text{π}}}{{N}_{f}}{\alpha }_{i}\text{,} (8) \nu =\dfrac{1}{n}\displaystyle\sum _{j=1}^{n}{\hat{\phi }}_{i,j}=\dfrac{1}{n}\displaystyle\sum _{j=1}^{n}{\phi }_{i,j}-\dfrac{2{\text{π}}{\sigma }_{i}}{n{N}_{f}}\displaystyle\sum _{j=1}^{n}{k}_{j}+\beta . (9) 式(9)中, i 表示数据包序号, j 为子载波序号, {k}_{j} 表示第 j 个子载波索引值, n 为子载波个数. 假设CSI中的子载波是对称的,即 \displaystyle\sum\limits_{j = 1}^n {{k_j} = 0} ,那么可以得到 v = \dfrac{1}{n}\displaystyle\sum\limits_{j = 1}^n {{\phi _{i,j}} + \beta } . 从原始相位中减去线性变量 \mu {k}_{i}+\nu 得:
{\tilde{\phi }}_{i}={\hat{\phi }}_{i}-\mu {k}_{i}-\nu ={\phi }_{i}-\dfrac{{\phi }_{n}-{\phi }_{1}}{{k}_{n}-{k}_{1}}{k}_{i}-\dfrac{1}{n}\displaystyle\sum _{j=1}^{n}{\phi }_{j}. (10) 经过相位的校正处理,获得的结果是真实相位经过线性变换得到的值. 此外,经过校正后的相位方差与实际相位方差之间存在一个缩放因子,该缩放因子为常数 {c}_{i} ,其大小与频率相关:
\begin{split} {\sigma }_{\tilde{{\phi }_{i}}}^{2}={c}_{i}{\sigma }_{{\phi }_{i}}^{2}\text{,}\end{split} (11) \begin{split} {c}_{i}=1+2\dfrac{{k}_{i}^{2}}{({k}_{n}-{k}_{1}{)}^{2}}+\dfrac{1}{n}.\end{split} 由于收发设备的特性,不同接收天线接收无线信号是彼此独立的,即 {\phi }_{i,1} 和 {\phi }_{i,2} 是相互独立的,可以推导出:
{\sigma }_{\mathrm{\Delta }{\tilde{\phi }}_{i}}^{2}={\sigma }_{{\tilde{\phi }}_{i,1}}^{2}+{\sigma }_{{\tilde{\phi }}_{i,2}}^{2}. (12) 通过式(12)可以推断,不同的2根天线之间的相位差方差是每根单独天线的相位方差和. 因此相较于单独天线的相位信号,相位差信号具有更高的分辨率,本文选取相位差作为特征信号能更好地映射不同的人数对WiFi信号的影响.
在传统的商用WiFi设备中,通常采用OFDM-MIMO技术实现多发多收的通信情形. 本文使用一套1发3收的设备来收集数据,借助3根接收天线中的相位信息两两做差得到了3个相位差矩阵. 为了避免因过多天线对而产生的数据冗余,需要从中选取出对人数变化最为敏感的天线对. 当人数对信号的影响增加时,信号的调制程度也会增加,从而导致子载波中的相位差方差增大. 因此本文选择方差这一指标来衡量人数对天线对的影响程度,以更好地捕捉人数变化对CSI的影响. 图2展示了在不同天线对中30个子载波的相位差方差分布情况. 其中,横轴表示天线对,纵轴表示相位差方差大小,散点表示各子载波的相位差方差,折线数值则代表30个子载波相位差方差的平均值. 通过图2观察到天线对1和3的平均方差最大,因此本文选择天线对1和3的相位差作为人流量监测的信息来源.
由于收发装置自身硬件的发射功率或传输速率等状态可能发生变化,因此采集到的原始CSI信号可能会出现异常值并导致明显的突变. 为了排除这些突变值,本文采用了Hampel滤波器[26],该滤波器在去除异常值方面具有显著的优势. 图3展示了在某个子载波上相位差信息经过Hampel滤波后的结果. 图3中用方框标记的圆点即为被识别为异常值的数据点.
相较于振幅滤波,对相位差进行滤波的关键在于确保滤波器不引起相位偏移,并且不改变信号的域. 因此,本文采用巴特沃斯滤波器来实现相位差的滤波操作. 该滤波器的传递函数为:
{\left|H\left(\omega \right)\right|}^{2}=\dfrac{1}{1+\left(\dfrac{\omega }{{\omega }_{\mathrm{c}}}\right)^{2N}}=\dfrac{1}{1+{\varepsilon }^{2}\left(\dfrac{\omega }{{\omega }_{\mathrm{p}}}\right)^{2N}}\text{,} (13) 其中 N 表示滤波器的阶数, {\omega }_{\mathrm{c}} 表示截止频率, {\omega }_{\mathrm{p}} 表示通频带边缘频率. 由于人行走的频率在20~80 Hz之间,所以巴特沃斯滤波器的截止频率被设置为经验值60. 该滤波器在很大程度上去除了噪声,在保留低频成分的同时对高频噪声进行了基本的滤波,以使波形更加清晰和平滑.
当人体靠近或远离收发装置时,各子载波的相位信息发生相应改变.尤其当人体位于收发装置的视距位置时,CSI相位差的变化更为显著.为了获取人体在通过收发装置的视距位置时的最大信息量,需要提取相应的数据包. 图4展示了30个子载波相位差方差的平均值. 600~750区间的数据包展现出比其他数据包更为显著的相位差方差. 因此,本文采用滑动窗口的方法提取信息量最大的150个数据包.
3.2 确定人流量特征信号
为了确定最佳的人流量特征信号,本文先对经过清洗的振幅和相位差信息进行特征提取,包括时域特征和小波域特征. 接着对这些特征进行降维处理,并通过两两组合这些特征的方式来验证其有效性. 在时域特征中,本文手工设计了均值、方差和峰峰值3个传统特征. 而在小波域特征中,也手工设计了过零点数量、方差和能量这3个特征. 考虑到CSI数据维度较高,本文采用PCA算法选取贡献率最高的第一主成分,以便更加直观地比较传统特征的显著程度.
图5展示了不同人数与不同特征之间的散点图,其中横坐标和纵坐标分别表示不同的特征. 图5(a)时域中的均值特征和方差特征在区分1人和5人方面具有明显差异,但在区分2人、3人和4人之间存在完全的重叠,因此难以进行区分. 图5(b)小波域的过零点和方差特征对不同人数的区分度非常低,几乎所有人数都彼此重叠. 图5(c)时域联合特征和小波域联合特征也存在着相似的问题,区分1人相对容易,但区分其他人数也面临困难. 然而,图5(d)中的相位差在时域上的特征呈现较为均匀的分布,重叠较少,因此具有较高的区分度.
综上所述,可以确定在时域上相位差信息作为人流量监测的特征信号. 然而,值得注意的是,提出的特征仍然存在轻微的重叠,不能完全区分出所有的人数. 由于手工设计的特征存在一定的限制,因此需要采用更高效的方法来挖掘人数与相位差中的潜在特征. 在3.4节中,本文将详细介绍如何利用深度学习来提取信号中的潜在信息.
3.3 多排人数据处理
3.1节和3.2节是基于单排人数据的分析结果,然而,在实际场景中,还会收集到连续多排人经过收发装置的数据. 如图6所示,这是经过数据清洗处理的部分多排人数据图,其中横坐标表示数据包个数,纵坐标表示相位差.
从图6中可以观察到,收集到的数据中存在多个明显的数据波动,每个波动对应着一排人通过收发装置. 因此,有效处理多排人数据的关键在于从连续的CSI数据中提取出有效的人流区间,并从这些区间中提取包含人在收发设备视距位置经过的最重要信息的数据包.
本文提出了利用标准差和方差来提取多排人数据中的有效数据包的方法. 该方法使用滑动窗口计算数据包的标准差,并与预设的阈值进行比较,以确定一排人的人流区间的起始点和结束点. 接着利用方差在这些起始点和结束点之间的数据段上确定人流通过收发装置视距的数据包,这些数据包被认为是最具信息价值的CSI数据段. 具体步骤为:
1)假设有一个连续的CSI数据时间序列 x[i]= \{{{x}_{1},{x}_{2},… ,{x}_{j} }\},其中第 j 个数据点为 {x}_{j} ,在这种情况下,计算窗口内的标准差值:
S T {D}_{j}\left[i\right]=\sqrt{{\dfrac{1}{w-1}\displaystyle\sum _{j=1}^{w}{\left({x}_{j}-\bar{x}\right)}^{2}}}\text{,} (14) 其中 i 表示子载波个数,本文 i\in \left\{\mathrm{1,2},… ,30\right\} , j 表示CSI数据时间序列上的第 j 个数据包, w 表示窗口长度,本文中w=150. 此外, {x}_{j} 表示CSI数据时间序列上的第 j个数据包的相位差,而 \bar{x} 表示CSI数据时间序列上的窗口大小为 w 的平均值.
2)计算第 j 个数据点上所有子载波的标准差:
S T {D}_{j}=\displaystyle\sum _{i=1}^{30}S T {D}_{j}\left[i\right]. (15) 3)根据实验确定阈值T,本文中T=2.5. 这些起始点和终止点构成了连续的CSI数据时间序列,并满足:
\left\{\begin{aligned}& S T {D}_{j_{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}} > T\text{,}\\& S T {D}_{j_{\mathrm{e}\mathrm{n}\mathrm{d}}} > T. \end{aligned}\right. (16) 4)确定好起始点和终止点后,人流区间CSI数据时间序列表示为
x\left[i\right]=\left\{{x}_{j_{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}},}{x}_{j_{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}+1,… ,}{x}_{j_{\mathrm{e}\mathrm{n}\mathrm{d}}}\right\}. (17) 5)人流通过收发装置视距的CSI数据时间序列应当符合条件
y=\mathrm{max}\left(\dfrac{1}{w-1}\displaystyle\sum _{k=j_{\mathrm{b}\mathrm{e}\mathrm{g}\mathrm{i}\mathrm{n}}}^{w}{\left({x}_{k}-\bar{x}\right)}^{2}\right). (18) 3.4 分类识别
Wi-HFM使用时域上的相位差来识别通道经过的人数. 人体经过WiFi设备的过程在空间和时间上都是动态的,这使得CSI信号会随着人数的改变和时间推移而变化,因此时域上的相位差具有潜在的空间特性和时间关联性. 为了捕获这2种潜在特性,本文采用深度学习中的CLDNN模型来自动学习CSI数据的抽象特征表示,以解决传统机器学习方法中手工设计特征的问题.
CLDNN[27]是将CNN,LSTM,DNN这3种网络模型中的核心部分融合在一起的一种新型神经网络. CNN具有局部连接、权值共享和池化操作等特点,在处理具有空间结构的数据时表现出色,因此本文采用CNN来提取CSI天线对中相位差的空间特征. 同时CSI是与时间相关的长序列数据,该数据在时域上对不同人数具有较强的区分度,故采用LSTM提取时间序列上的关联性特征. 由于CNN输出为高维而LSTM需要输入为低维,在两者中间添加了一个线性层以降低数据维度. 为了将前面提取的空间特征和时间特征映射到更具可区分性的空间中,将LSTM的输出传递给全连接层后采用Softmax函数进行人数分类.
本文的CNN模型由1个卷积层和1个池化层组成,卷积层提取CSI相位差数据中的局部特征信息,池化层减小数据尺寸,降低运算量的同时为后续处理提供更好的输入. CNN通过滑动窗口的方式与卷积核做卷积操作得到不同的输出特征图,输出特征图的数量与使用的卷积核的数量相同. 卷积运算的具体公式为:
{\boldsymbol {X}}_{m}=f\left(\displaystyle\sum _{n}{\boldsymbol {W}}_{m}^{n}\cdot {\boldsymbol {X}}^{n}+{\boldsymbol {b}}_{m}\right)\text{,} (19) 其中 {\boldsymbol {X}}_{m} 表示第 m 个输出特征图, {\boldsymbol {W}}_{m}^{n} 表示卷积核参数, {\boldsymbol {b}}_{m} 为偏置参数, f\left(\cdot \right) 为激活函数,本文采用 \mathrm{R}\mathrm{e}\mathrm{L}\mathrm{U} 函数作为激活函数,用来缓解过拟合和梯度消失等问题.
传统的RNN模型可以处理CSI这种长序列数据存在梯度消失或梯度爆炸的问题,因此本文采用基于RNN改进的LSTM以捕获数据中的时间相关性. LSTM设计了3个门控单元来控制细胞的长期状态. 首先遗忘门会根据当前时刻输入的 {\boldsymbol {x}}_{t} 和前一时刻隐藏层输出的外部状态 {\boldsymbol {h}}_{t-1} ,通过 \mathrm{S}\mathrm{i}\mathrm{g}\mathrm{m}\mathrm{o}\mathrm{i}\mathrm{d} 函数 \sigma 决定哪些信息应该从细胞状态 {\boldsymbol {c}}_{t-1} 中被遗忘. {\boldsymbol {f}}_{t} 表示每个细胞状态元素被遗忘的程度,并在 \left[\mathrm{0,1}\right] 区间内取值,公式为:
{\boldsymbol {f}}_{t}=\sigma \left({\boldsymbol {W}}_{\boldsymbol {f}}\cdot \left[{\boldsymbol {x}}_{t},{\boldsymbol {h}}_{t-1}\right]+{\boldsymbol {b}}_{\boldsymbol {f}}\right). (20) 其次通过输入门来更新细胞状态,以确定要存储哪些信息到细胞状态中. 输入门的 \mathrm{S}\mathrm{i}\mathrm{g}\mathrm{m}\mathrm{o}\mathrm{i}\mathrm{d} 函数用于确定更新的权重,而函数 \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h} 则生成一个候选向量 {\tilde{\boldsymbol {c}}}_{t} ,该候选向量会被添加到细胞状态中. 输入门的输出 {\boldsymbol {i}}_{t} 和候选者向量 {\tilde{\boldsymbol {c}}}_{t} 的计算公式为:
{\boldsymbol {i}}_{t}=\sigma \left({\boldsymbol {W}}_{\boldsymbol{i}}\cdot \left[{\boldsymbol {x}}_{t},{\boldsymbol {h}}_{t-1}\right]+{\boldsymbol {b}}_{\boldsymbol {i}}\right)\text{,} (21) {\tilde{\boldsymbol {c}}}_{t}= {{\mathrm{tanh}}}\left({\boldsymbol {W}}_{\boldsymbol {c}}\cdot \left[{\boldsymbol {x}}_{t},{\boldsymbol {h}}_{t-1}\right]+{\boldsymbol {b}}_{\boldsymbol{c}}\right). (22) 将旧细胞状态 {\boldsymbol {c}}_{t-1} 更新成 {\boldsymbol {c}}_{t} ,公式为:
{\boldsymbol {c}}_{t}={\boldsymbol {f}}_{t}\odot {\boldsymbol {c}}_{t-1}+{\boldsymbol {i}}_{t}\odot {\tilde{\boldsymbol {c}}}_{t}. (23) 最后由输出门来产生所需的输出值,这个最终的输出值是基于细胞状态的内容来决定的. 输出门的 \mathrm{S}\mathrm{i}\mathrm{g}\mathrm{m}\mathrm{o}\mathrm{i}\mathrm{d} 函数确定了细胞状态中的哪些成分被输出,接着细胞状态 {\boldsymbol {c}}_{t} 会经过函数 \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h} 的处理,然后与之前 \mathrm{S}\mathrm{i}\mathrm{g}\mathrm{m}\mathrm{o}\mathrm{i}\mathrm{d} 函数的输出 {\boldsymbol {o}}_{t} 相乘,得到最终的输出结果. 具体的计算公式为:
{\boldsymbol {o}}_{t}=\sigma \left({\boldsymbol {W}}_{\boldsymbol {o}}\cdot \left[{\boldsymbol {x}}_{t},{\boldsymbol {h}}_{t-1}\right]+{\boldsymbol {b}}_{\boldsymbol {o}}\right)\text{,} (24) {\boldsymbol {h}}_{t}={\boldsymbol {o}}_{t}\odot \mathrm{tanh}\left({\boldsymbol {c}}_{t}\right)\text{,} (25) 其中 \boldsymbol{W} 为各个门的权重矩阵, \boldsymbol{b} 为偏置向量. 接着在CNN和LSTM之间引入线性层以调整特征表示和维度,而LSTM的输出会被传递给全连接层,用于后续的分类任务. 由此构建的人流量监测网络模型称为 CLDNN,其结构如图7所示.
模型使用1对天线采集的 CSI 数据作为输入,因此设置了单个输入通道. 第1层卷积层采用 3×15 的卷积核,步幅为 1×1,输出通道为32. 为了提取主要特征并防止过拟合,卷积层后接一个池化层,下采样大小和步幅均为 2×4. 最后将池化层的输出传递给一个线性层,获得256个输出.
本文采用包含 64 个神经元的 LSTM 隐藏层,并使用函数tanh作为内部状态的激活函数,遗忘系数设定为 0.9. 深度神经网络的输出结果由众多网络参数共同决定,因此本文选择广泛使用的 Adam 算法作为训练算法. Adam 算法能够根据损失函数动态调整每个参数的学习速率,避免因梯度过大导致的学习步长过大问题,从而提高训练效率.
CLDNN 模型最后使用 Softmax 层输出人数分类结果. 假设样本集合为 {X}=\left\{{\boldsymbol {x}}_{1},{\boldsymbol {x}}_{2},… ,{\boldsymbol {x}}_{n}\right\} ,共有 l 个类别(本文中 l=5 ), {\boldsymbol {\psi }}_{j} 为第 j 类的权重. 模型计算每个样本所有类别概率的公式为:
P\left({y}_{i}=j|{\boldsymbol {x}}_{i},{\boldsymbol {\psi }}_{j}\right)={\mathrm{e}}^{{\boldsymbol {\psi }}_{j}^{\mathrm{T}}{\boldsymbol {x}}_{i}}/\displaystyle\sum _{j=1}^{l}{\mathrm{e}}^{{\boldsymbol {\psi }}_{j}^{\mathrm{T}}{\boldsymbol {x}}_{i}}. (26) 对于每个样本向量 {\boldsymbol {x}}_{i} ,模型输出的结果是一个 l 维列向量. 该向量中的每个元素代表样本属于对应类别的概率,且所有元素之和为 1. 最终,模型将概率最高的类别判定为该样本的类别.
Wi-HFM的分类识别包括2个阶段:离线训练和在线识别. 在离线训练阶段,深度学习网络的参数是通过单排人数据集和多排人数据集进行离线学习得到的. 而在在线识别阶段,模型使用当前采集到的多排人数据信息来输出人数的估计值. 通过上述方法,Wi-HFM能有效识别出单排人数和连续性人流人数.
4. 实验与结果
4.1 实验设置
实验采用AP模式,即借助一个Tenda F3 WiFi路由器和一个带有Intel WiFi Link 5300网卡的小型主机,以收集人流量数据. 数据解析工作使用了CSI Tool开源软件包. 发送端的路由器工作在2.4 GHz频段,仅装备有1根天线,而接收端的小型主机则配备了外接的3根天线,这两者被安置在高1.1 m的三角支架上,形成了1×3的MIMO系统,以500 packet/s的采样率进行数据收集.
为了构建室外和室内场景模型,本文选取了2栋教学楼之间的走廊和1栋教学楼内的通道作为实验场地. 实验环境布局如图8 所示. 图8(a)表示的室外场景位于走廊,宽度约为5.5 m,无其他障碍物,因此多径效应较少,信号损失较小. 而图8(b)表示的室内场景位于通道,宽度约为7 m,但存在桌子、电梯等障碍物,导致多径效应明显,信号损失较大.
为了收集CSI数据,邀请了16名不同身高体重的志愿者,其中男女各8位. 志愿者们参与了多次实验,其中包括单排0~5人通过收发装置和连续人流通过收发装置的情况. 本文总共收集了2 000个人流数据样本,其中一半是单排人流数据,另一半是多排人流数据,文献[28]给出了Wi-HFM数据集的开源地址. 本文将80%的单排和多排人流数据样本用作训练数据集,剩下的20%用于测试数据集,最后根据测试集的准确率来评估系统性能.
4.2 实验因素分析
4.2.1 实验场景设置的影响
在Wi-HFM的应用场景中,收发端之间的距离和多排人之间的间隔都对实验结果产生影响. 本研究对这2个因素进行了详细调查,以寻找实现最佳人流量识别效果的条件.
收发设备之间的距离会对信号产生影响. 如果设备距离太近,通道容量不足以容纳更多人;而如果距离太远,会导致信号衰减. 鉴于现实中存在多人通行的情况,实验将最小距离设置为2.5 m,而室外通道的最大距离设置为4.5 m. 在实验中,将设备之间的距离设置在2.5~6.5 m,单排人数据实验结果如表1所示. 从表1中可以发现,当收发设备之间的距离超过4.5 m时,识别准确率下降. 因此,最佳的收发设备距离应该在2.5~4.5 m.
表 1 收发设备之间不同距离的准确率Table 1. Accuracy of Different Distances Between Transmitting and Receiving Devices距离/m 室外准确率/% 室内准确率/% 2.5 98.3 96.5 3.5 98.6 96.6 4.5 98.2 96.6 5.5 90.3 6.5 75.6 注:室外通道最大距离为4.5 m. 连续的人流通过监测装置时,由于人与人之间可能相互干扰,所以需要分析多排人之间的距离对监测性能的影响. 本文在连续人流中设置了不同的排与排之间的距离,分别为0.5 m,1 m,1.5 m,2 m以及2 m以上,多排人数据的实验结果见表2. 研究结果表明,只要排与排之间的距离大于1 m以上,就可以准确地识别人数.
表 2 多排人之间不同距离的准确率Table 2. Accuracy of Different Distances Between Multiple Rows of People距离/m 室外准确率/% 室内准确率/% 0.5 70.8 64.3 1.0 91.3 90.5 1.5 95.2 94.8 2.0 95.2 94.8 >2.0 95.2 94.8 4.2.2 CLDNN模型参数的影响
CLDNN模型具有大量参数,模型的输出受这些参数共同影响,因此参数调整成为构建CLDNN网络模型的关键步骤. 在深度学习中,样本数量对准确率有显著影响. 如图9所示,不同样本数量下的准确率表现差异明显. 单排人数据的拟合度最高,通常只需要少量的样本数. 而对于多排人数据,由于人与人之间的距离有差异,模型需要更多数据来学习. 然而,无论是单排人数据还是多排人数据,CLDNN都能够良好地拟合模型,实现高精度的识别,这体现了CLDNN在应对不同数据情境时的优越性.
为了快速达到最低损失值,以避免学习率过大引发的震荡和误差,需要随着训练轮数的增加逐渐降低学习率. 不同的学习率衰减函数会影响收敛速度等结果. 本研究比较了5种经典的衰减函数,它们使用了初始学习率0.01或0.001,并设置衰减率为0.9. 不同衰减函数的迭代次数结果列于表3中.
表 3 不同衰减函数的迭代收敛次数Table 3. Iterative Convergence Times for Different Decay Functions衰减函数 初始学习率 迭代次数 exponential_decay 0.001 100 natural_exp_decay 0.010 150 polynomia_decay 0.001 >400 inverse_time_decay 0.001 >650 cosine_decay 0.001 >580 从表3中可以观察到,指数衰减函数和自然指数衰减函数的迭代次数明显少于其他衰减函数. 它们能在不到200次迭代中收敛,而其他衰减函数则需要超过400次. 值得注意的是,指数衰减函数的收敛速度最快,而其他函数很难达到收敛,并且其准确率在一定范围内波动,非常不稳定.
为了验证CLDNN模型的有效性,本文进行了消融实验,使用室外单排人数据构建了6个不同的人流量监测模型. 这些模型的准确率如图10所示,只有CLDNN和LSTM+DNN这2个模型在小样本数据的情况下达到较高的准确率,其他4个模型对样本数据量较为敏感,并且其准确率相对较低. CLDNN能够在较少的样本下表现出色,在样本数据充足时实现高精度的识别.
4.3 人流量监测系统性能评估
4.3.1 不同环境下的系统性能
人流量监测系统的性能如图11所示,分别展示了室外和室内环境下系统的混淆矩阵. 从图11中可以观察到,室外环境下各个标签的准确率均高于室内环境. 这是因为室外环境相对于室内环境更加简单,信号损失较少. 无论是室外还是室内环境,各个标签的准确率均高于93%以上,系统准确率分别达到96%和94%. 以上结果表明Wi-HFM能满足实际生活中的应用需求.
4.3.2 与现有工作比较
为了验证Wi-HFM模型在无线感知人流量方面的有效性,本文工作与现有工作进行了比较研究,并将比较结果汇总于表4中. 文献[17]提出的Door-Monitor模型将相位差序列生成的频谱图输入到7层CNN网络中,对进出门的访客进行动态计数,其平均准确率为94.5%. WiCrowd[29]模型使用振幅和相位的协方差矩阵的特征值,有效地检测到视距附近由人群运动引起的显著信号变化,人数识别准确率最高可达82.4%. HFD[30]利用WiFi信号的偏度和峰度作为特征,并采用SVM对特征进行分类以此估计当前队列中的人数,其准确率能够保持在90%左右. 当区域仅有一排人流时,上述方法可有效估算人数;但面对多排连续人流,便无法准确处理.
表 4 与现有工作的比较结果Table 4. Results Compared with Existing Work模型 分类方法 识别人数 准确率/% Door-Monitor CNN 1~6 94.5 WiCrowd SVM 1~4 82.4 HFD SVM 1~5 90.0 WiFlowCount CNN 1~6 94.3 Wi-HFM CLDNN 1~5 96.7 文献[18]中的WiFlowCount提出了一种最优旋转分割算法,将连续人流的频谱图分割成子人流的子频谱图. 通过卷积神经网络从子谱图中估算出每个子流中的人数,然后相加得出连续人流中的总人数. 该方案实现了连续的人流量计数,准确率也高达94.3%. 然而,WiFlowCount要求人与人之间的间隔至少8 m才能获得较好的效果,因此应用场景具有很大局限性. 与现有方法相比,Wi-HFM在连续人流计数方面表现出色. 只要排与排之间的距离大于1 m,无论是在室外还是室内环境中,本文方法的准确率均高达96.7%和94.1%. 综上所述,本文方法在实用性上明显优于现有方法.
5. 结 论
本文提出了Wi-FHM,一种基于商用WiFi信道特征信息的人流量监测方法. 该方法包含多个处理步骤:首先,采用相位校准算法消除随机相位偏移,接着使用巴斯特沃滤波器消除高频噪声,然后通过标准差和方差提取连续性人流数据中的有效数据包,利用PCA算法确定了时域上的相位差信息作为特征信号. 最后,借助相位差设计的传统特征信号输入到CLDNN模型中以实现连续性人流的人数统计. 实验结果表明,与传统人流量监测方案相比,Wi-FHM拥有较高的准确率和更为优异的实用性.
未来的研究将聚焦在2个方面:1)将增加Wi-FHM的功能以进行人流的方向判定,以便系统能够识别进出人群的方向;2)将尝试使用模型迁移方法,以便在不同场景下仅使用1个模型监测人流量.
作者贡献声明:杨志勇设计了论文整体逻辑架构并修改论文;卢超负责数据整理和撰写论文;王俊杰提出算法思路并完成实验.
-
表 1 实验环境
Table 1 Experiment Environment
表 2 基础性能测试参数
Table 2 Basic Performance Test Parameters
参数类型 带宽测试对应
参数配置延迟测试对应
参数配置吞吐率测试对应
参数配置队列深度 1 1 1 工作任务数 16 1 1 I/O负载类型 顺序读写 随机读写 随机读写 单次I/O大小/KB 128 4 4 运行时间/s 30 30 30 fio ioengine libaio libaio libaio 表 3 fio与bdevperf测试配置
Table 3 fio and bdevperf Test Configuration
参数类型 带宽测试对应参数配置 吞吐率测试对应参数配置 队列深度 1 1~64 工作任务数 1~16 1 块大小/KB 128 4 执行时间/s 300 300 I/O模型 随机/顺序读写 随机/顺序读写 fio ioengine libaio libaio -
[1] Goda A. 3-D NAND technology achievements and future scaling perspectives[J]. IEEE Transactions on Electron Devices, 2020, 67(4): 1373−1381 doi: 10.1109/TED.2020.2968079
[2] Baldassin A, Barreto J, Castro D. Persistent memory: A survey of programming support and implementations[J]. ACM Computing Surveys, 2021, 54(7): 1−37
[3] Shu Jiwu. Data Storage Architectures and Technologies [M]. Berlin: Springer, 2024
[4] Yang Z, Harris J R, Walker B, et al. SPDK: A development kit to build high performance storage applications [C] //Proc of the 2017 IEEE Int Conf on Cloud Computing Technology and Science (CloudCom). Piscataway, NJ: IEEE, 2017: 154–161
[5] Kim H J, Lee Y S, Kim J S. NVMeDirect: A user-space I/O framework for application-specific optimization on NVMe SSDs [C] //Proc of the 8th USENIX Conf on Hot Topics in Storage and File Systems. Berkeley, CA: USENIX Association, 2016: 41–45
[6] OpenMPDK. uNVMe: KV and LBA SSD userspace NVMe driver [CP/OL]. [2024-09-12]. https://github.com/OpenMPDK/uNVMe
[7] SNIA. Serial attached SCSI technology roadmap [EB/OL]. [2024-09-12]. https://www.snia.org/groups/scsi-trade-association-sta-forum/sas-roadmaps/serial-attached-scsi-technology-roadmap
[8] axboe. fio: Flexible I/O Tester [CP/OL]. [2024-09-12]. https://github.com/axboe/fio
[9] AMD. AMD I/O Virtualization Technology (IOMMU) Specification, Rev 3.09-PUB [S]. Santa Clara: Advanced Micro Devices Inc, 2023
[10] Shin J Y, Xia Zenglin, Xu Ningyi, et al. FTL design exploration in reconfigurable high-performance SSD for server applications [C] //Proc of the 23rd Int Conf on Supercomputing. New York: ACM, 2009: 338−349
[11] Serial ATA International Organization. Serial ATA Revision 3.1 [S]. Beaverton: Serial ATA International Organization, 2011
[12] Intel. Serial ATA AHCI 1.3. 1 Specification [S]. Santa Clara: Intel Corp, 2015
[13] NVM Express. Specifications: NVMe specifications overview [EB/OL]. [2024-09-12]. https://nvmexpress.org/specifications/
[14] SNIA. Building an all-flash array with SAS, NVMe or SATA [R]. Santa Clara: SNIA, 2018
[15] Shu Jiwu, Li Bigang, Zheng Weimin. Design and implementation of a SAN system based on the fiber channel protocol[J]. IEEE Transactions on Computers, 2005, 54(4): 439−448 doi: 10.1109/TC.2005.62
[16] Sun Microsystems, Inc. IP SAN fundamentals: An introduction to IP SANs and iSCSI [EB/OL]. [2024-09-12]. https://www.oracle.com/technetwork/systems/articles/ip-san-fundamentals-149896.pdf
[17] INCITS. SCSI Architecture Model-5 (SAM-5) [S]. Washington: American National Standards Institute, Inc, 2016
[18] The Linux Foundation. I/O latency optimization with polling [R]. San Francisco, CA: The Linux Foundation, 2017
[19] Huang Jian, Badam A, Qureshi M K, et al. Unified address translation for memory-mapped SSDs with FlashMap [C] //Proc of the 42nd Annual Int Symp on Computer Architecture. New York, ACM, 2015: 580−591
[20] Simon P, Li Jialin, Zhang I, et al. Arrakis: The operating system is the control plane [C/OL] //Proc of the 11th USENIX Conf on Operating Systems Design and Implementation. Berkeley, CA: USENIX Association, 2014 [2024-09-12]. https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-peter_simon.pdf
[21] Gerhorst L. Analysis of interrupt handling overhead in the Linux kernel [D]. Erlangen: Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU), Department of Computer Science, 2018
[22] OASIS Open. Virtual I/O Device (VIRTIO) Version 1.2 [S]. Burlington: OASIS Open, 2022
[23] qemu. qemu: Official QEMU mirror [CP/OL]. [2024-09-12]. https://github.com/qemu/qemu
[24] PCI-SIG. PCI Express® Base Specification Revision 5.0, Version 1.0 [S]. Beaverton: PCI-SIG, 2019
[25] Michael S. Vhost [CP/OL]. [2024-09-12]. https://github.com/torvalds/linux/tree/master/drivers/vhost
[26] KIOXIA America, Inc. KIOXIA PM7-R series (2.5-inch) [EB/OL]. [2024-09-12]. https://americas.kioxia.com/en-us/business/ssd/enterprise-ssd/pm7-r.html
[27] Samsung Electronics Co, Ltd. A landmark release for Enterprise SSDs [EB/OL]. [2024-09-12]. https://semiconductor.samsung.com/cn/ssd/enterprise-ssd/pm1653/
[28] Broadcom Inc. MegaRAID 9670−24i [EB/OL]. [2024-09-12]. https://www.broadcom.com/products/storage/raid-controllers/megaraid-9670-24i
[29] Microchip Technology Inc. Adaptec® RAID adapters [EB/OL]. [2024-09-12]. https://www.microchip.com/en-us/products/storage/adaptec-smartraid-raid-adapters
[30] Shu Jiwu, Fang Kedong, Chen Youmin, et al. TH-iSSD: Design and implementation of a generic and reconfigurable near-data processing framework[J]. ACM Transactions on Embedded Computing Systems, 2022, 37(4): 96−119
[31] Gao Congming, Xin Xin, Lu Youyou, et al. ParaBit: Processing parallel bitwise operations in NAND flash memory based SSDs [C] //Proc of the 54th IEEE/ACM Int Symp on Microarchitecture (MICRO54). New York: ACM, 2021: 59−70
[32] Lu Youyou, Shu Jiwu, Wang Wei. ReconFS: A reconstructable file system on flash storage [C] //Proc of the 12th USENIX Conf on File and Storage Technologies (FAST). Berkeley, CA: USENIX Association, 2014: 75−88
[33] Zhang Jiacheng, Shu Jiwu, Lu Youyou. ParaFS: A log-structured file system to exploit the internal parallelism of flash devices [C] //Proc of the 2016 USENIX Annual Technical Conf (USENIX ATC). Berkeley, CA: USENIX Association, 2016: 87−100
[34] Shu Jiwu, Li Fei, Li Siyang, et al. Towards unaligned writes optimization in cloud storage with high-performance SSDs[J]. IEEE Transactions on Parallel and Distributed Systems, 2020, 31(12): 2923−2937 doi: 10.1109/TPDS.2020.3006655
[35] Li Weijia, Xue Wei, Shu Jiwu, et al. Dynamic hashing: Adaptive metadata management for petabyte-scale file systems [C] //Proc of the 23rd IEEE Conf on Mass Storage Systems and Technologies (NASA/MSST2006). Piscataway, NJ: IEEE, 2006: 159−164
[36] Bijlani A, Ramachandran U. Extension framework for file systems in user space [C] //Proc of the 2019 USENIX Annual Technical Conf (USENIX ATC). Berkeley, CA: USENIX Association, 2019: 121−134
[37] avfs. AVFS―A virtual filesystem [CP/OL]. [2024-09-12]. http://avf.sourceforge.net/
[38] Zhu Yue, Wang Teng, Mohror K, et al. Direct-FUSE: Removing the middleman for high-performance fuse file system support [C] //Proc of the 8th Int Workshop on Runtime and Operating Systems for Super-computers. New York, ACM, 2018 [2024-09-12]. https://www.osti.gov/servlets/purl/1458703
[39] Huai Qianbo, Hsu W, Lu Jiwei, et al. XFUSE: An infrastructure for running filesystem services in user space [C] //Proc of the 2021 USENIX Annual Technical Conf (USENIX ATC). Berkeley, CA: USENIX Association, 2021: 863–875
[40] Caulfield A M, Mollov T I, Eisner L A, et al. Providing safe, user space access to fast, solid state disks[J]. ACM SIGPLAN Notices, 2012, 47(4): 387−400 doi: 10.1145/2248487.2151017
[41] libfuse. libfuse: The reference implementation of the Linux FUSE (Filesystem in Userspace) interface [CP/OL]. [2024-09-12]. https://github.com/libfuse/libfuse
[42] Oracle. vdbench users guide [EB/OL]. [2024-09-12]. https://www.oracle.com/technetwork/server-storage/vdbench-1901683.pdf
[43] Corbet J, Rubini A, Kroah-Hartman G. Linux Device Drivers 3rd Edition: Memory Mapping and DMA [M]. Sebastopol: O’Reilly Media, 2006
[44] INCITS. SAS Protocol Layer-5 (SPL-5) [S]. Washington: American National Standards Institute, Inc, 2023
[45] Sathya P. mpt3sas [CP/OL]. [2024-09-12]. https://github.com/torvalds/linux/tree/master/drivers/scsi/mpt3sas
[46] Alex W. VFIO [CP/OL]. [2024-09-12]. https://github.com/torvalds/linux/tree/master/drivers/vfio
[47] Broadcom Inc. HBA 9500−8e tri-mode storage adapter [EB/OL]. [2024-09-12]. https://www.broadcom.com/products/storage/host-bus-adapters/sas-nvme-9500-8e
[48] filebench. filebench: File system and storage benchmark that uses a custom language to generate a large variety of workloads [CP/OL]. [2024-09-12]. https://github.com/filebench/filebench
[49] Intel. bdevperf [EB/OL]. [2024-09-12]. https://spdk.io/doc/bdevperf.html
[50] The Linux Foundation. User interrupts―A faster way to signal [R]. San Francisco, CA: The Linux Foundation, 2021