首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么服务器内存硬件上的黑色颗粒这么多?

之前有位读者问我为什么服务器内存上有这么多的颗粒,今天我专门就这个话题成文一篇作为回复。 各位从事服务器端开发的同学天天都在开发代码,代码都需要内存。确实了解一下服务器内存硬件是挺有有必要的。...所以我特地找来了一个服务器内存条来。下图是一个 32 GB 服务器内存条的正面和反面图。 可见服务器内存上有很多的黑色颗粒,相比下面的台式机内存颗粒要多很多。...在实现上,ECC 内存会板上额外再添加内存颗粒来专门负责检查错误并纠正错误。 带 ECC 功能的内存,需要为 CPU 同时提供 72 位的读写,其中 64 位是数据,另外 8 位用于 ECC 校验。...LRDIMM 相比 RDIMM 在引入寄存缓存器 RCD 的基础上,又进一步引入了数据缓冲器 DB(Data Buffer)。 引入DB数据缓冲器作用是缓冲来自内存控制器或内存颗粒的数据信号。...简单总结一下,服务器内存硬件上颗粒数量更多的原因有3个 需要 ECC 功能,需要比普通内存多 1/8 的颗粒数来支持 ECC 需要 RCD 模块降低地址等控制信号干扰影响,将单条容量做到更大 需要 DB

21110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    防止 Windows 上的内存检查

    这次的主要攻击者是NtMapViewOfSection,一个可以将段对象映射到给定进程的地址空间的系统调用,主要用于实现共享内存和内存映射文件(Win32 API 将是MapViewOfFile)。...return STATUS_INVALID_PARAMETER; 现在,这听起来像是一个沼泽标准MEM_RESERVE,您也可以VirtualAlloc(MEM_RESERVE)随心所欲,但是与此内存交互的...好吧,在错误地将标志识别为未记录后,我继续尝试创建我可能创建的最大部分。一切都很顺利,直到我打开ProcessHacker内存视图。PC 几乎无法使用至少一分钟,此后黑客也有一段时间没有响应。...这是一个使用 ETW 跟踪的漂亮工具,可以让您深入了解系统上发生的事情。然后可以在Windows 性能分析器中查看记录的跟踪。...在花了更多时间盯着每个人最喜欢的反编译器中的代码之后,它变得更加清楚发生了什么。我敢打赌,它会遍历给定内存范围的每个页表条目。而且因为我们一次处理数 TB 的数据,所以迭代次数超过 10 亿次。

    4.3K80

    java内存管理(上)

    一.简介 可以分几部分回答这个问题,首先JVM内存划分 | JVM垃圾回收的含义  |  有哪些GC算法  以及年轻代和老年代各自特点等等。...二.java内存划分 方法区 (线程共享)  常量  静态变量  JIT(即时编译器)编译后代码也在方法区存放 堆内存(线程共享) 垃圾回收的主要场地 程序计数器  当前线程执行的字节码的位置指示器 Java...虚拟机栈(栈内存) :保存局部变量,基本数据类型以及堆内存中对象的引用变量 本地方法栈  (C栈):为JVM提供使用native方法的服务 通过这幅图了解一下 JDK 1.8同JDK 1.7 最大的区别是...:元数据取代了永久代.元空间的本质和永久代类似,都是对JVM规范中的方法区的实现.其元空间和永久代之间的最大区别在于:元数据空间不在虚拟机中,而是在本地内存中 程序计数器(PC寄存器) 程序计数器的定义...生命周期:随着线程的创建而创建,随着线程的销毁而销毁 是一个唯一不会出现的OutOfMemoryError的内存区域 Java虚拟机栈 定义: 描述Java方法运行过程的内存模型 Java虚拟机栈会为每一个即将运行的

    69810

    Spark 内存管理的前世今生(上)

    欢迎关注我的微信公众号:FunnyBigData 作为打着 “内存计算” 旗号出道的 Spark,内存管理是其非常重要的模块。...类实例,为旧的内存管理的实现 不管是在新方案中还是旧方案中,都根据内存的不同用途,都包含三大块。...不足的内存(申请的内存减去 execution 的空闲内存)与 memoryReclaimableFromStorage 中的较小值。...这是因为,这本来就是属于 execution 的内存并且通过踢除来实现归还实现上也不复杂 一个 task 能使用多少 execution 内存?...这样做是为了使得每个 task 使用的内存都能维持在 1/2*numActiveTasks ~ 1/numActiveTasks 范围内,使得在整体上能保持各个 task 资源占用比较均衡并且一定程度上允许需要更多资源的

    1.3K20

    4.2 服务器上的 Git - 在服务器上搭建 Git

    在服务器上搭建 Git 现在我们将讨论如何在你自己的服务器上搭建 Git 服务来运行这些协议。...NOTE 这里我们将要演示在 Linux 服务器上进行一次基本且简化的安装所需的命令与步骤,当然在 Mac 或 Windows 服务器上同样可以运行这些服务。...把裸仓库放到服务器上 既然你有了裸仓库的副本,剩下要做的就是把裸仓库放到服务器上并设置你的协议。...如果你想在你的仓库上设置更复杂的访问控制权限,只要使用服务器操作系统的普通的文件系统权限就行了。...如果需要团队里的每个人都对仓库有写权限,又不能给每个人在服务器上建立账户,那么提供 SSH 连接就是唯一的选择了。 我们假设用来共享仓库的服务器已经安装了 SSH 服务,而且你通过它访问服务器。

    4K50

    服务器内存监测

    而对于程序员而言,如何避免内存泄漏也是一门学问,倘若不加以控制,那么无论多大的内存都会有消耗殆尽的那天。...本文当然不是研究如何分析内存泄漏的产生原因与解决方案,而是在此之前的一步,通过简单的内存监测方式来预测内存泄漏的 潜在可能性 或者 偶发性 等。...对于不同的主流编程语言,都有着读取系统内存与应用堆内存的相关类,因为本网站后端是springboot编写的,所以这里就介绍java语言的实现方式。...我这边需要监测 系统内存 与 jvm堆内存 ,最终的结果会展示各个时间点的内存情况,所以需要一个时间类,表示每个切片的时间点。...timeMarkInterval是存储定时器id的,在销毁之前释放定时器;physicMemory和heapMemory获取图表div节点,用于echarts节点获取;systemInfo则会存储定时从服务器拉取到的数据

    15920

    服务器内存监测

    而对于程序员而言,如何避免内存泄漏也是一门学问,倘若不加以控制,那么无论多大的内存都会有消耗殆尽的那天。...本文当然不是研究如何分析内存泄漏的产生原因与解决方案,而是在此之前的一步,通过简单的内存监测方式来预测内存泄漏的 潜在可能性 或者 偶发性 等。...对于不同的主流编程语言,都有着读取系统内存与应用堆内存的相关类,因为本网站后端是springboot编写的,所以这里就介绍java语言的实现方式。...我这边需要监测 系统内存 与 jvm堆内存 ,最终的结果会展示各个时间点的内存情况,所以需要一个时间类,表示每个切片的时间点。...timeMarkInterval是存储定时器id的,在销毁之前释放定时器;physicMemory和heapMemory获取图表div节点,用于echarts节点获取;systemInfo则会存储定时从服务器拉取到的数据

    18540

    linux服务器内存

    早上到单位 发现服务器 mysql 服务器停了 然后起来了 查询日志 显示 内存满了 把mysql服务给杀了 linux 服务器如果 内存满了 会自动清理进程 防止服务器挂掉 选择的话 谁占的的内存大...就先杀谁 我的服务器里面 mysql服务占的内存是最大的 所以就把mysql就给杀了 image.png 然后 重启mysql 查询内存 image.png 在这说一下 怎么看linux的内存 举个例子...,而+buffers/cache反映的是可以挪用的内存总数。...记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候...,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦

    31.9K10

    服务器内存使用飙升的排查

    这几天自己线上的乞丐服务器遇到一个问题,io会瞬间飙升到很高很高,造成内存使用飙升。但是实际上并发量并不大(网络连接数)。知道是哪个进程造成的,但是确实排查代码中没有是么地方会有这么大的读写。...部署的是一个socket服务。用测试脚本跑,同时100个socket连接毫无压力。也不知道对方到底发的什么数据导致这么大的内存占用。 之前也处理过类似的问题。...服务器问题,无非就是资源不合理的使用,造成服务器内存,cpu,io,流量等相关资源出现非常不正常的波动,资源使用率飙升。对于服务器性能问题的排查,没有其他比较好的办法,只能是通过重现复盘去改进。...特别是如果服务器上跑的东西比较多,一个个的排查相当痛苦。 出现问题,首先看日志。如果是线上的,先想办法恢复服务再排查。 看看登录日志,访问日志是否有异常,确定是否有人扫机器。...看性能监控图表,分析机器的状况,以及问题发生的规律。 看是否有服务被系统kill。一般系统日志都会记录kill之前的进程列表,可以很好的分析哪些进程资源占用多。

    22.3K20

    Android内存泄漏的八种可能(上)

    如果不小心,你的Android应用很容易浪费掉未释放的内存,最终导致内存用光的错误抛出(out-of-memory,OOM)。...一般内存泄漏(traditional memory leak)的原因是:由忘记释放分配的内存导致的。...如果持有对象的强引用,垃圾回收器是无法在内存中回收这个对象。 在Android开发中,最容易引发的内存泄漏问题的是Context。...Android机器内存有限,太多的内存泄漏容易导致OOM。 检测逻辑内存泄漏需要主观判断,特别是对象的生命周期并不清晰。幸运的是,Activity有着明确的生命周期,很容易发现泄漏的原因。...总结 看过那么多会导致内存泄漏的例子,容易导致吃光手机的内存使垃圾回收处理更为频发,甚至最坏的情况会导致OOM。垃圾回收的操作是很昂贵的开销,会导致肉眼可见的卡顿。

    54920

    内存溢出危机:如何优化服务器和IDE的内存管理?

    在使用服务器或者集成开发环境过程中,不可避免会遇到内存溢出的问题。所以内存管理的好坏直接决定了数据分析的效率,本篇将从实际场景出发,分享内存优化的关键技巧与实践,让你的工作流畅无阻!...实例内存监测 在跑大任务之前,用户端可以查看自己的实例所在的服务器是否有足够的内存,在天意云官网可以看到不同服务器情况和内存配置,用户可以自行切换,选择时段内最优配置跑任务。...如果内存剩余过低,可以登录服务器,使用命令如top、free -h检查内存消耗最多的进程。如果某些进程占用大量内存但并非必要,可以使用kill -9命令终止这些进程,释放部分内存。...查看具体是哪些Python程序 ps -ef | grep 进程号 依据上一步得到的内核编号,到Jupyter里面定位到具体的代码 如果已经运行完毕了的程序,记得及时关闭,否则内存会一直占用着。...如果内存一直占用着不用,系统就会将其换出到交换内存中,导致交换内存占用高。如果还需要用,但是积累了很多垃圾变量,可以重启内核。 重启 下期内容 本系列下一节更新“加速服务器数据的下载与上传”的内容

    11510

    4.4 服务器上的 Git - 配置服务器

    配置服务器 我们来看看如何配置服务器端的 SSH 访问。 本例中,我们将使用 authorized_keys 方法来对用户进行认证。...请注意,每添加一个新项目,都需要有人登录服务器取得 shell,并创建一个裸仓库。 我们假定这个设置了 git 用户和 Git 仓库的服务器使用 gitserver 作为主机名。...需要注意的是,目前所有(获得授权的)开发者用户都能以系统用户 git 的身份登录服务器从而获得一个普通 shell。...如果将 git-shell 设置为用户 git 的登录 shell(login shell),那么用户 git 便不能获得此服务器的普通 shell 访问权限。...比如,你可以限制掉某些本应被服务器接受的 Git 命令,或者对刚才的 SSH 拒绝登录信息进行自定义,这样,当有开发者用户以类似方式尝试登录时,便会看到你的信息。

    2.3K50

    Linux 内核 VS 内存碎片 (上)

    (外部)内存碎片是一个历史悠久的 Linux 内核编程问题,随着系统的运行,页面被分配给各种任务,随着时间的推移内存会逐步碎片化,最终正常运行时间较长的繁忙系统可能只有很少的物理页面是连续的。...由于 Linux 内核支持虚拟内存管理,物理内存碎片通常不是问题,因为在页表的帮助下,物理上分散的内存在虚拟地址空间仍然是连续的 (除非使用大页),但对于需要从内核线性映射区分配连续物理内存的需求来说就会变的非常困难...本文将重点描述当前常用的 3.10 版本内核在伙伴分配器的预防内存碎片的扩展,内存规整原理,如何查看碎片指数,以及如何量化内存规整带来的延迟开销等。...Linux 在经典算法的基础上做了一些个扩展: 分区的伙伴分配器; Per-CPU pageset; 根据迁移类型进行分组; 我们以前介绍过 Linux 内核使用 node, zone, page 来描述物理内存...对于通过页表访问虚拟地址空间的情况 (比如用户空间的堆内存需求)并不需要连续物理内存,为什么呢?

    3.5K40

    服务器之 ECC 内存的工作原理

    但在服务器应用中,处理的一般都是非常重要的计算,可能是一笔订单交易,也可能是一笔存款。另外就是服务器经常是连续要运行几个月甚至是几年,没有办法通过重启的方式来解决问题。...因此服务器对比特翻转错误的容忍度很低。需要有技术方案能够一定程度解决比特翻转问题所带来的影响。 ECC 就是这样一种内存技术。...Richard Hamming 本人也因为该算法获得了 1968 年的图灵奖。该虽然至今已经过去了 70 多年,但至今仍然广泛应用在服务器的 ECC 内存上。 首先要说的是海明码是有局限性的。...在实际中,内存中 64 比特数据中 3 个或者更多比特同时发生的概率非常非常的低。另外就是内存在运行上要求速度要足够的快,海明码用硬件实现起来性能损耗大约只有 2% - 3%。...但因为在 64 比特中有 3 比特同时出现错误的概率太低了,所以海明码仍然广泛地应用在服务器的 ECC 内存中。 总结 开篇我们看到了两个内存条,一个有 8 个黑色颗粒,另外一个有 9 个内存颗粒。

    57921

    在共享内存实现 Redis(上)

    ,因此不能用普通的指针来做数据之间的指向和关联,为方便起见,本文档下面描述共享内存数据的指向依然采用“指针”这个词,但是读者应理解为描述共享内存中相对位置的一个整数 共享内存形式和扩缩流程 由于需要实现内存的扩缩...,而Sys V的shmXXX系列接口的共享内存对这方面支持并不好,因此选用Posix的共享内存形式,具体地,就是在tmpfs(一般是在/dev/shm目录)下创建文件,然后用mmap的方式映射为共享内存...,扩缩流程可采用文件操作: 1 munmap取消对文件的映射 2 打开文件并执行truncate操作,改变文件大小 3 重新mmap到目标大小 如此便可实现共享内存的扩缩容 (实际上通过新建文件/删除文件...Block,合并操作基本上就是上述分裂节点的逆操作,当一个Block被删除数据,没有被清空的时候,实时查看其前驱和后继,看是否满足合并条件,如果满足,则将两个Block合并,这样可以省下一个Block归还...,这样也可以避免相关操作在编程上的递归方式 平衡树的操作 1)根据Key查找数据 类似普通平衡树的查找方式,但是由于每个节点可能有多个数据,而且我们希望在查找失败时并不仅仅告知失败,能同时告知这个Key

    4.1K20

    Buddy 内存管理机制(上)

    Buddy 简介 内存是计算机系统中最重要的核心资源之一,Buddy 系统是 Linux 最底层的内存管理机制,它使用 Page 粒度来管理内存。...上图是 Buddy 系统的内部组织结构,本篇文章只关心未分配区域Free区域的管理,下篇文章再来分析可回收区域的管理。 一个系统的内存总大小动辄几G几十G,不同的内存区域也有不同的特性。...根据这些地址空间的限制,把同一个 node 内的内存再划分成多个 zone 。 3、Order Freelist。按照空闲内存块的长度,把内存挂载到不同长度的 freelist 链表中。...这就是 Buddy 的核心思想,已2的幂个 page 的长度来管理内存方便分配和释放,最核心的目的就是减少内存的碎片化。 4、Migrate Type。...大于 1 Page 的内存分配大多发生在内核态,而用户态的内存分配使用的是缺页机制所以分配的大小一般是 1 Page。

    1.8K11

    云上SQL Server 内存管理

    前言:众所周知,cpu,内存,磁盘是一个服务非常重要的三个核心资源,本章将介绍SQL Server 内部的内存结构和内存管理。...SQL Server数据库与NUMA NUMA(非一致性内存架构)是为了扩展主板性能。在多个CPU服务器上,为了避免共享内存总线成为瓶颈,NUMA为每个CPU都单独设置了内存控制器。...内存节点 内存节点就如上面所说的,和NUMA向对应,一个SQL Server实例在启动的过程中至少会有一个内存节点。您可以通过下面命令查看内存节点。...内存分配员 所有组件都需要内存分配员来访问内存节点来分配内存,比较消耗内存的组件还有期专用的内存分配员,可以通过一下语句查看内存员的情况。...控制台提供的“执行计划缓存命中率”对应的是Cache Hit Ratio 指标。 “内存占用“这个指标,在实例启动后经过一段时间的运行,会和云上购买的实例最大内存基本一致,不用过多担心。

    2.3K40

    Apache Spark 内存管理详解(上)

    Spark对堆内内存的管理是一种逻辑上的“规划式”的管理,因为对象实例占用内存的申请和释放都由JVM完成,Spark只能在申请后和释放前记录这些内存,我们来看其具体流程: 申请内存: Spark在代码中...此外,在被Spark标记为释放的对象实例,很有可能在实际上并没有被JVM回收,导致实际可用的内存小于Spark记录的可用内存。...其中systemMaxMemory取决于当前JVM堆内内存的大小,最后可用的执行内存或者存储内存要在此基础上与各自的memoryFraction参数和safetyFraction参数相乘得出。...上述计算公式中的两个safetyFraction参数,其意义在于在逻辑上预留出1-safetyFraction这么一块保险区域,降低因实际内存超出当前预设范围而导致OOM的风险(对于非序列化对象的内存采样估算会产生误差...值得注意的是,这个预留的保险区域仅仅是一种逻辑上的规划,在具体使用时Spark并没有区别对待,和“其它内存”一样交给了JVM去管理。

    2K30
    领券