CoNEXT22 论文分享 | Coal Not Diamonds: How Memory Pressure Falters Mobile Video QoE

  “在远古时候,煤和钻石属于同一种物质,但经过上亿年的时光,它们却成为了两种不同的物品。那么,是什么造成的呢?是压力的作用。受压力小的变成了煤,而受压力大的,变成了钻石。”但是,当手机的内存压力变大时,视频的QoE反而变得更糟糕,此时,压力并没有促成更有价值的钻石的产生,而是生成了煤炭。

  今天介绍的文章是发表在CoNEXT22会议上的,作者是来自LUMS的团队。本文做了大量的实验探究视频播放设备的内存压力与视频用户体验之间的关系,并给出了几点解决方案。

背景

  随着智能手机的广泛应用,人们愈发热衷使用手机收看视频,根据资料显示,在2021年,全球有63%的智能手机用户收看Youtube。平均美国成年人,每天收看至少50分钟的视频。并且,人们愈发追求更高清的视频内容和更流畅的观看体验,这就对视频内容的分辨率和帧率有了更高的要求。

picture1

picture2

  先前研究视频传输的工作较多关注于网络对传输的瓶颈,即如何在网络带宽不足的情况下调整视频传输的码率。但是,较少人关注到,视频播放设备本身(内存、CPU等性能)也会对视频用户体验造成影响。于是,本文从内存的分析出发,探究对视频QoE的影响。

picture3

picture4

  首先,我们来介绍一些手机内存相关的背景知识:

  1.手机内存中也是采用页表管理,页可以可分为三类,一是被进程使用中的内存(Used),二是没有被使用的(Free),三是缓存在硬盘上的页(Cached),需要的时候可以被回收。

  2.两个可以被用来回收内存的守护进程,The kernel swap daemon (kswapd)负责回收背景中的内存,Low-memory killer daemon (lmkd) 用来在低内存状态时杀掉其他进程回收内存资源。

  针对运行中的应用,内存压力可以被分为四个等级:Normal:没有内存压力; Moderate: kswapd启动,开始回收内存; Low:回收不足,已经影响前景应用的性能; Critical:不能再维持任何的背景进程,甚至要杀掉前景进程。

实验一、手机内存压力分析实验

  在了解了上述背景之后,作者进行了大量的实验分析,从手机内存压力分析实验到内存压力与视频QoE关系的实验层层递进。首先是进行了内存压力分析实验。 在这一实验当中,采用了自己设计的signalcapter应用,在背景中收集内存压力信号进行分析,受试者80人,手机内存从1GB-8GB不等,共收集了9950小时的实验数据。

picture5

  作者统计了一小时内手机出现不同内存压力信号的频率,从图中可以看出63%的手机经历每小时大于一次的内存压力,19%大于10次Critical内存压力,6.3%大于70次内存压力。所以,内存压力现象频繁出现在手机中。

picture6

picture7

  之后,作者又统计了在经历过Critical内存压力后,转移到其他压力状态的概率,以及在Critical转移到其他状态之前的持续时间。从图中可以看出,转移到Low状态大于占67.2%,并且会持续12.8秒左右的时间,这说明内存压力很难被立即缓解。 通过以上实验作者总结,手机端经常处于高内存利用状态,终端频繁观测出长时间的内存压力,内核不能快速缓解内存压力。

实验二、手机内存压力对视频QoE影响实验

  在得出实验一的结论后,作者进而开始分析内存压力对视频QoE的影响。在接下来的实验中,实验受试者使用了1GB-3GB内存的手机如下图所示,并通过从浏览器收看视频的方法进行实验。

picture8

picture9

  作者首先分析了视频丢帧率这一指标,从图中可以看出,对于1GB内存的手机,在收看720P以上的视频会产生75%的丢帧率,对于2GB和3GB的设备,在收看1080P的视频会出现25%和9%的丢帧率。

picture10

  之后,作者还分析了手机视频播放发生崩溃的情况。1GB的设备,崩溃在大于480P的视频时就发生了,在有内存压力的情况下大于720p的视频会经常发生崩溃。对于2GB的设备,大于1080P总发生崩溃,而3GB的设备没有检测到崩溃。

picture11

  作者又对比了不同的视频类型对丢帧率的影响,对于所有类别,帧率为30fps的视频只在720P以上才发生丢帧,但是对于60fps帧率的视频,随着内存压力和分辨率的上升,丢帧变得严重。另外对比不同的视频类型,新闻类画面相对静止,所以丢帧率较低。因此视频内容和视频应用的性能指标也有一定的关系。

picture12

  作者还让受试者观看Normal内存压力状态下和Moderate压力状态下的视频,并收集他们的观感。在99个受试者中,绝大多数都能感知到视频间的差距。

原因分析

  在进行了以上的实验观察后,作者开始分析内存对视频性能产生影响的真实原因。定位到了以下的三个进程,一个是负责硬盘I/O的mmcqd,它经常使用CPU并且具有较高的调度优先级;第二个是kswapd,具有较高的CPU利用率,经常在内存较低时启动回收CPU内存;第三个是lmkd,会在内存不足时杀掉视频客户端,导致崩溃。

  于是,作者通过profile工具观察了各个进程的运行情况。进程的运行状态可分成三类:(1) Running:进程占用CPU内核运行中;(2) Runnable,CPU不可用,进程等待中; (3) Runnable (Preempted), 进程等待CPU时被其他进程抢占。经过观察,mmcqd进程在Normal内存压力下运行时间处于进程中的第50名,运行0.4秒,而当内存压力转为Moderate时就变成了第6名,运行4.6秒。Kswapd也是从第14名的2.3秒跃升到了第1名的22秒。与它相比,视频客户端只有7.9秒。因此,可以看出,这些内存管理进程大量抢占了视频进程的运行时间,进而导致卡顿和崩溃的发生。

picture13

解决方案

  在进行了上述的实验观察和原因分析后,作者对视频流自适应算法设计者、平台内容提供者、系统设计者以及手机生产者提出了以下几点建议:

  1.对视频流自适应算法设计者:传统的自适应码率调整算法通常以估算网络带宽为输入调整视频的码率,算法可以将设备内存压力信号作为输入,调整码率或帧率,从而达到更好的播放效果。如图所示,如果合理降低帧率,将降低视频的丢帧率。

picture14

  2.对平台内容提供者:增强客户端的遥测,提供大量的视频编解码和帧率方案。

  3.对操作系统设计者:合理设计内存管理进程,不要过多抢占视频应用的资源。

  4.对于收集生产者:分配给小内存的设备更多的CPU资源,可以提升视频播放的性能。

总结与展望

  另辟蹊径:转换思路,脱离从网络与视频QoE的传统角度,分析设备本身的性能和QoE的关系。

  写作思路:大部分论文的写作思路一种是从实验观察到问题发现再到提出方法解决和实验验证,另一种是通过理论建模到提出优化方案再到实验分析或理论证明。而本文是通过大量的实验一步步观察挖掘出设备本身的指标与应用性能之间的联系,并建设性地提出解决方案。从中可以看出,学术研究的重点不一定要放在解决问题上,发掘一个好问题也是十分关键的,这样一来问题可以牵引出新的研究点,启发人们从新的角度去提出更多的解决方案。

宋丛溪
宋丛溪
2020级