虚拟机播放本地视频,qemu有大量Write?
来源:互联网 发布:知我药妆产品是正品吗 编辑:程序博客网 时间:2024/06/11 05:26
最近在做测试,需要监控系统状态,然而多次测试的结果总是与我想象的有些差距。。。比如,播放本地视频,为何出现大量的Write。。郁闷了好久,还是要解决的呀!先看看是那个进程搞的鬼:
哦,好吧,qemu是在写磁盘…
1. 想到了strace命令:-strace -p PID -e write -t
发现写数据比较多的系统调用:
补充:
用于写的系统调用共有三个:
1. short_write (struct inode *inode, struct file *filp, const char *buf, int count)
short_write 函数是用于驱动程序里的系统调用;
2.write(inf fd, char *buf, int count)
write是用户程序的系统调用,只有三个参数:文件描述符,buffer,返回的字节数;
3.asmlinkage ssize_t sys_write(unsigned int fd, const char * buf, size_t count)
系统的写调用,是系统运作的核心函数,也是前两项通过调用实现向硬件设备写数据的必经通道;
2. 很明显,我测试中遇到的系统调用write操作主要是用户空间的写。它写的文件描述符很明确,先找到这些文件~举例:直接:sudo find / -name 22,就可以看到目前qemu进程所使用的fd找出来啦:
找到与我这个进程相关的fd。。随便进去一个目录:
一部分是socket文件,,大概是用于进程间通信和网络操作,毕竟是网络传输协议测试嘛。嗯,回归到我的重点:磁盘,于是下边的anon_inode:[eventpoll],anon_inode:[eventfd]成功的引起了我的注意。
3. anon_inode:动态生成的文件节点,一般没有具体的磁盘路径。
(1.) eventfd : 类似于pipe,用来完成两个线程之间事件触发,已经支持到进程级别了, 能够用来作为线程之间简单通讯,类似于pthread_cond_t。(https://www.cnblogs.com/Leo_wl/p/5879763.html)有关进程间通信的博文,写得比较清楚。
(2).epoll : 则是linux提供的一种多路复用技术,完成与select,poll等一样的功能,完成对多个文件描述符进行等待。我猜测它的职责是帮助调用者寻找当前就绪的设备。
(http://blog.csdn.net/wangxiaoqin00007/article/details/14448185)关于epoll,可以参考这个连接。因为我测试的环境下,主要是io操作,所以向这个文件下写内容就可以理解了。
嗯,大概就是这样,欢迎指点:)
- 虚拟机播放本地视频,qemu有大量Write?
- iPhone本地视频播放
- 本地视频播放
- iOS 播放本地视频
- iOS-播放本地视频
- Android 本地视频播放
- Android 播放本地视频
- 本地视频播放
- 本地视频播放器
- Android视频本地播放
- 播放本地视频
- Android VideoView本地视频播放
- TextureView+MediaPlayer播放本地视频
- SysLetvPlayerLib无法播放本地视频
- vedioview加载本地视频播放
- Android播放本地视频音频
- 采集视频后在本地直接进行编码、解码(不进行网传),为什么显示出来有大量马赛克
- 虚拟机-QEMU
- HDU 2203:亲和串
- 用QMediaPlayerControl播放AAC格式音频
- 解决hibernate中配置文件没有提示的问题
- Handler在多线程间进行消息通信
- RMQ和LCA问题
- 虚拟机播放本地视频,qemu有大量Write?
- easyui中combobox为什么没有加载json
- python3.x之super()用法小结
- 原始下载
- Linux基础知识
- 用c++写一个简单的打字游戏
- unity-开发小游戏遇到的难题日记
- 学习简单算法的第一天
- Angular2实现父子组件通信(详解)