美文网首页
计算机内存单双通道的影响

计算机内存单双通道的影响

作者: ye_ran | 来源:发表于2018-11-24 22:17 被阅读20次

之前一段时间,现场报了个问题到开发,老大让我去分析下。现场在部署的产品是行人分析,即接入多个摄像机,实时分析监控视频中的行人。一般一台机器会启动多个行人分析的进程以对接多个摄像头。

远程过去,观察到的现象是所有分析进程占用的CPU资源几乎同步地从正常的80%左右以几分钟的速度飙到300%以上,持续一会儿后被强制重启。如此不断循环。

此产品发布前在公司内部经过充分测试,在其他多个实际环境中也能长时间稳定运行。单单这一个机器中有问题,而且是必现的,并且规律极其一致,初步怀疑是此机器系统层的问题,所以才会同时影响所有分析进程。

再继续分析是此程序中的哪些线程占用CPU异常的。使用top和pstack两个工具找出了3个异常线程,其他二十多个线程都正常。这3个线程中的一个是主线程,另外2个的主要工作则分别是取视频流解码,和图像分析。而这3个线程都会涉及到频繁的图像数据的拷贝。因此猜测问题出在内存这块。

结合以上的两处判断,推测是内存条的问题。就此询问现场同事内存容量的总大小,内存条数量等信息。了解到机器中就1根16GB的内存条。而公司内部测试的环境是2根8GB的内存条。由此推断是双通道改成单通道导致的CPU飙升。让现场同事改成双通道后,异常消失。

可能还有些人没明白双通道改成单通道后为啥为导致CPU的飙升。仔细分析下来是这样的:

  1. 处理的是视频数据,视频是25fps的帧图像;
  2. 要知道一帧1080p的图像解码后有6+MB的大小;
  3. 多个进程中都在频繁的对解码后的帧图像拷贝非常占用内存带宽;
  4. 而一般DDR3的内存条在系统运行中的频率也就800MHz,计算下64位系统下的内存带宽也就 64*800M/8=6.4GB而已,另外内存拷贝是区分读取和写入的,这样实际的带宽就是3.2GB;
  5. 一路视频流需要多少带宽呢?假设一帧图像前前后后总共拷贝4次,就是要占用256M4=600MB了;
  6. 一个机器上一般要开到6个分析进程,这就要3.6GB的带宽了,根本不够,更不用说其他进程也同样需要占用内存带宽了。
  7. 虽然1根16GB的内存和2根8GB的内存总容量一样,但2根8GB的内存带宽却是1根16GB内存的近2倍。

平时系统资源不到极限根本不会注意到其对进程运行的影响,而一到极限影响就非常大了,所以测试时要非常注意这点。

相关文章

  • 计算机内存单双通道的影响

    之前一段时间,现场报了个问题到开发,老大让我去分析下。现场在部署的产品是行人分析,即接入多个摄像机,实时分析监控视...

  • PHP 变量的类型 、变量的作用域 和 变量引用;

    变量的定义:变量就是计算机的内存单元; 变量的名称定义:变量的名称就是计算机内存单元的名称 | 指针,也可以理解为...

  • Shell编程系列(二)-- Bash 变量

    一、什么是Bash变量与变量分类 什么是变量?变量就是计算机内存单元,其中存放的值可以改变。这个对于 有过计算机语...

  • C语言实战开发篇-6 指针

    指针变量的定义 指针变量存储的是地址,通过它能查找到内存单元。如果把计算机内存空间比作一幢公寓,每个存储单元相当于...

  • 顺序表

    计算机内部存储一张线性表,最为方便的就是一组连续的内存单元来存储整张线性表。这种顺序存储结构下的线性表就叫顺序表 ...

  • 关于浏览器缓存

    首先浏览器缓存分为内存缓存和文件缓存。内存缓存是浏览器自己控制的,不受Cache-Control影响,跟计算机内存...

  • 0.1 + 0.2为什么等于 0.300000000000000

    1. 原因 : 详细解析:  计算机内部存储数据的编码的时候,0.1在计算机内部根本就不是精确的0.1,而是一个有...

  • 004 复杂度来源:高性能

    复杂度的体现 单台计算机内部为了高性能带来的复杂度 多台计算机集群为了高性能带来的复杂度 单机复杂度 计算机内部复...

  • JS 基础之内存图

    计算机内存分配 现代的计算机内存配置一般至少8G起步。 操作系统开机即占用512MB、chrome打开即占用1...

  • 数组

    计算机内存 计算机内存可以想象成一堆盒子,每个盒子上有连续的编号(内存地址) 一维数组 数组存储一组类型相同的值 ...

网友评论

      本文标题:计算机内存单双通道的影响

      本文链接:https://www.haomeiwen.com/subject/hgsyqqtx.html