当前位置: 首页 > news >正文

郑州大型网站建设价格阿里云网站建设与发布题库

郑州大型网站建设价格,阿里云网站建设与发布题库,千图网素材下载网站,公司单位名称大全最近在做连续数据流的缓冲系统#xff0c;C语言代码实现后#xff0c;粗略测试了下#xff0c;功能上应该没有问题。那么#xff0c;接下来就该测试性能了。输入 top 命令#xff0c;的确可以看到一系列 cpu 使用率#xff0c;其中一个值得注意的子项就是 io 使用率了C语言代码实现后粗略测试了下功能上应该没有问题。那么接下来就该测试性能了。输入 top 命令的确可以看到一系列 cpu 使用率其中一个值得注意的子项就是 io 使用率了如下图top 命令上图中 io 前面的数字是什么意思呢是指 CPU 有 63% 的时间花费在 io 上了吗在 Linux 中输入 man 命令查看相关手册发现 io(wait) 被解释为“等待 I/O 完成的时间”。“等待 I/O 完成的时间”如果按照手册对 iowait 字面上的解释是很容易陷入误区的。因为就上例而言似乎 CPU 有 63% 的时间消耗在等待 I/O 操作完成导致 CPU 的性能白白浪费这么多。其实不是的Linux 是一个成熟的操作系统它才不会让 CPU 宝贵的性能白白浪费在耗时的 I/O 等待上实际上如果当前系统还有其他任务需要使用 CPULinux 会将等待 I/O 完成的任务暂时挂起将 CPU 使用权暂时交给有需要的任务。那么 iowait 到底是什么意思呢有人认为iowait 只是 CPU 空闲(idle)时间的一个子集也就是说 iowait 其实可以归类到 idle 状态本质上表示 CPU 是空闲的只不过 iowait 表示任务中有等待 I/O 操作完成的时间。iowait 到底是什么意思呢这样认为有一定的道理毕竟哪怕 iowait 的数值是 100%也仅仅是说明是 CPU 把时间都花在“等待”上了这样的情况一般只有在当前系统没有其他任务需要使用 CPU 时才会发生。因为一旦有其他任务需要使用 CPULinux 内核会立刻将 CPU 提供给该任务使用CPU 时间就不再全部是“等待I/O”花费的了(不再是 100% io 了)。不过读者应该明白的是“idle”是 CPU 的状态而 “iowait”则是任务的状态。对于单核 CPU 来说同时只能有一个任务运行上述说法可以认为是准确的。但是对于多核 CPU 来说情况就有些不同了。例如某个系统拥有 4 个 CPU有一个 I/O 超密集型任务正在运行那么iowait 会是 100% 呢还是 25% 呢换句话说iowait 会是在其中一个 CPU 上 100%其他CPU 上 0% 呢还是会在 4 个 CPU 上平均 25 % 呢简单做一个实验简单做一个实验就可以了。我们使用 Linux 中的 dd 命令模拟高密集 I/O 任务这一过程可以通过输入以下命令实现dd if/dev/sda of/dev/null bs1MB这条命令可能需要 root 权限/dev/sda 是我的磁盘读者可能需要换成自己的节点名。此时通过 top 命令可以查看到下面这样的结果top 命令图中的 “wa”表示 I/O 等待时间(它和 io、iowait 是一个意思名字不同而已)。可见Linux 此时采用单个 CPU 处理 I/O 任务。如果读者细心的话应该能够发现I/O 任务只是偶尔的切换到其他 CPU 上运行这是为了保证 CPU 缓冲的命中率Linux 内核尽量让任务在单个 CPU 中运行。在其他一些系统中I/O 任务可能会在各个CPU中频繁的切换此时会产生下面这样的结果I/O 任务可能会在各个CPU中频繁的切换假设 dd 命令是系统中执行 I/O 的唯一任务那么在同一时刻最多只会有一个 CPU 处理 I/O 等待任务。因此实际上 34.820.926.73.786.1接近但低于100。进一步实验为了让实验更可重现我们可以使用 taskset 命令为任务指定 CPUtaskset 1 dd if/dev/sda of/dev/null bs1MB应该注意taskset 后的数字 1 并不是 CPU 的编号而是一种掩码。此时通过 top 命令查看 CPU 使用请看应该能够发现 CPU0 的 wa 项接近 100这说明 CPU0 几乎所有的时间都花在等待 I/O 操作完成上。那么是不是此时 CPU 就没有精力处理其他任务了呢我们再输入下面这条命令taskset 1 sh -c while true; do true; done上面这条命令是在相同的 CPU 上执行一个死循环用于模拟计算密集型任务它是不是就没有机会执行了呢输入 top 命令得到如下结果CPU0 的 wa 降低为 0 了CPU0 的 wa 降低为 0 了与此同时用户态和系统态的 CPU 时间接近 100% 了。这是意料之中的因为本质上 CPU 是空闲的Linux 内核当然可以把 CPU 交给第二个任务使用。原本用于等待 I/O 完成的 CPU 时间现在用于处理第二个任务了。此时通过 top 命令查看 wa自然得到接近 0 的结果。小结现在基本就清楚 top 命令中 % io 的含义了对于指定的 CPU 来说iowait 表示在此时间内CPU 其实是空闲的不过 CPU 并不是严格意义上的“空闲”毕竟它还需要等待 I/O 操作完成。对于产生 I/O 操作请求的线程来说它会阻塞等待 I/O 操作完成。理解这一点对于我们开发I/O操作密集的C语言程序是非常有帮助的。点个赞再走吧欢迎在评论区一起讨论质疑。文章都是手打原创每天最浅显的介绍C语言、linux等嵌入式开发喜欢我的文章就关注一波吧可以看到最新更新和之前的文章哦(最近发现有些帐号搬运我的文章并且标上原创标签有些可耻请注明出处)。
http://www.zqtcl.cn/news/550688/

相关文章:

  • 百度网站是什么阿里云免费网站建设
  • 网站建设平台源码攻击网站步骤
  • 注册了网站之后怎么设计深圳开发app
  • 国外网站搭建平台移动互联网公司
  • 做网络私活的网站网站开发的人
  • 数据分析网站开发四川手机网站设计方案
  • 什么是网络营销的方法莱州网站建设关键字排名优化网络托管微信代运营
  • 雅虎网站收录提交入口怎么看网站谁做的
  • 青浦专业做网站免费网站软件大全
  • joomla 网站图标六安市城市建设档案馆网站
  • 郑州 公司网站制作win10 wordpress安装
  • html5网站有哪些网站建设部分费用会计科目
  • 网站域名备案 更改吗深圳新站优化
  • 房产网站门户系统免费网站免费无遮挡
  • 用国外网站 图片做自媒体seo诊断a5
  • 广州市南沙建设局网站优改网logo设计
  • 网站建设亿玛酷知名公司网站首页如何做
  • 教育网站 php网络服务公司
  • net域名做网站怎么样建站公司 转型经验
  • 赣州网站建设哪家公司好上海市建设安全协会网站
  • 网站排名优化软件有哪些西宁网站建设官网
  • 支付宝手机网站签约迪庆公司网站开发方法
  • 唐山网站关键词优化网站开发公司推荐
  • 福建响应式网站制作市工商局网站建设情况
  • 深圳网站运营托管罗伯特清崎说的网络营销是什么
  • 太仓市质监站网址百度关键字推广费用
  • 为您打造高端品牌网站pageadmin wordpress
  • 中小型网站建设的基本流程简约网站欣赏
  • 设备上哪个网站做外贸推广网络服务类型及其所采用的网络协议
  • 学习前端开发的网站动漫设计属于什么大类