- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
大多数可用的桌面(廉价)x86 平台现在仍然不支持 ECC 内存 (Error Checking & Correction)。但内存位翻转错误率仍在增长(not the best SO thread,Large scale CERN 2007 study "Data integrity":“其内存模块的位错误率为 10-12 ...观察到的错误率为比预期低 4 个数量级”;2009 年 Google 的 "DRAM Errors in the Wild: A Large-Scale Field Study")。对于当前具有数据密集型负载(8 GB/s 读取)的硬件,这意味着可能每分钟(来自 CERN07 的 10-12 个供应商 BER)或两天一次(10< CERN07 的 sup>-16 BER)。 Google09 表示每 Mbit 最多可以有 25000-75000 位 FIT(每十亿小时的时间故障),这相当于 8GB RAM 每小时 1-5 位错误(“平均可纠正错误率每年每 GB 2000–6000")。
所以,我想知道,是否可以在系统范围内添加某种软件错误检测(检查用户和内核内存)。例如,为 Linux 内核和/或系统编译器创建一个补丁,为每个内存页面添加一些校验和,并尝试通过定期重新计算校验和来检测静默内存损坏(位翻转)?
例如,我们能否查看所有对内存的写入(来自用户和内核空间),以区分预期的内存更改和内存中的位翻转?或者我们可以通过一些帮助程序以某种方式检测所有代码吗?
我了解任何类型的软件内存 ECC 都可能会消耗大量性能并且不会捕获所有错误,但我认为尽早检测至少一些内存位翻转是有用的,然后它们将在以后被重用计算或存储到硬盘驱动器。
我也明白更好的数据保护方法是切换到 ECC 硬件,但大多数 PC 仍然是非 ECC。
最佳答案
问题是,与“软件 ECC 对策”相比,ECC 非常便宜。您可以轻松检测他们是否有 ECC 模块并在没有时提示(或打印警告)。
http://www.cyberciti.biz/faq/ecc-memory-modules/
For example, can we see all writes to memory (both from user and kernel space), to distinguish between intended memory changes from in-memory bit flips? Or can we somehow instrument all codes with some helper?
呃,你永远不会“看到”总线上的位翻转。它们实际上是由粒子撞击 RAM 引起的,稍微翻转一下。直到很久以后,您才能注意到您读出的内容与您写入的内容不同。要仅通过总线检测到这一点,您需要一份 all RAM 的副本(即创建一个影子副本)位于您的真实 RAM 中,因此您可以验证每次读取都返回写入该位置的内容。)
try to detect silent memory corruptions (bit-flips) by regular recomputing of checksums?
Redis 专家对用于测试 RAM 是否存在问题的算法写了一篇很好的文章。 http://antirez.com/news/43但这实际上是在寻找 RAM 错误,而不是随机位翻转。
如果“重新计算校验和”仅在您不写入内存时有效。这可能“足够好”,但您需要弄清楚哪些页面没有被写入。
要捕获 100% 的错误,每次写入之前都必须先计算该内存块的校验和,然后将其与记录的校验和进行比较(以确保该 block 在 RAM 中没有降级)。只有这样才能安全地进行写入然后更新校验和。正如你可以想象的那样,它的性能将是可怕的(至少慢 100 倍)。
I understand that any kind of software memory ECC may cost a lot of performance and will not catch all errors, but I think it can be useful to detect at least some memory bit-flips early, before they will be reused in later computations or stored to hard drive.
嗯,有一种简单的方法可以检测 100% 的错误,但会以 50% 的性能为代价:只需一次在 2 个盒子上运行计算(或者在两个不同时间在一个盒子上运行,可能需要进行 RAM 测试)如果您偏执,则介于两者之间。)如果结果不同,则说明您检测到错误。
另见:
关于memory - 无 ECC 平台的软件内存位翻转检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23587591/
我有一个数据集,我试图在其中探索将变量限制在给定值并将超出的部分滚动到后续间隔的影响。我可以从概念上看到一些方法可以使用 cumsum() 来做到这一点。或类似的,但正在努力了解如何以合乎逻辑的方式实
我正在开发一个使用 iPhone 前置摄像头的应用程序。当使用该相机拍摄图像时,iPhone 会水平扭曲图像。我想将其镜像回来,以便能够保存它并按照在 iPhone 屏幕上看到的方式显示它。 我读了很
这是 HTML // stuff here Order /
我正在使用 Jquery - 是否有一种简单的方法可以在用户滑过 div 时更改它的背景颜色? 最佳答案 你可以用 CSS 做到这一点: #myDiv:hover { background-color
有谁知道是否可以翻转图像并在其背面显示内容。这就是我的意思:想象一下你手里拿着一张肖像。然后你翻转并查看肖像的背面,背面有文字。我正在寻找类似的东西,单击图像将镜像/翻转到另一侧,上面有文字。不可90
我在翻车方面遇到了一些麻烦..希望你能帮助我! 我正在使用 li 导航,我希望有单独的框链接到不同的页面。这部分很好,可以正常工作。我希望能够将鼠标悬停在框上并让框和链接改变颜色。我可以毫无问题地改变
所以我目前在 Vuejs 中有一个组件,用户可以在其中从他们的本地文件系统中选择一个文件。用户选择图片后,图片会在 div 中预览 codesandbox .出于某种原因,某些图像会自动“翻转”到侧面
我有一个滚动顶部菜单。我正在尝试获取它,以便我的背景图像 (17px x 13px) 悬停在中央。我已经尝试了所有背景 css 属性,但似乎没有任何效果。我是不是用错了方法? 这是我的 CSS: #n
我以前用过这个效果,一切正常(据我所知),但就是不行。我错过了什么? Fiddle here Sprite here 谢谢。 最佳答案 由于您的 Sprite 是水平排列的,因此您需要像这样偏移悬停状
代码后面的代码不起作用,因为重新查找接受字符串作为第一个参数,正则表达式作为第二个参数。 (-> "hello" .toUpperCase (re-find #".$")) 如果我像这
我想使用 CABasicAnimation 翻转 UILabel。动画将永远重复,并将在两个不同值之间更改 UILabel 的文本。 - (void)animateLabel { [self
旋转 WPF 图像非常简单 imgCurrent.LayoutTransform = new RotateTransform(_rotationAngle); 水平和垂直镜像呢? 机外: In GDI
我需要创建一个动画 - 翻转一个 View 并显示另一个。 当前显示的 View 的宽度慢慢减小到零,之后要显示的 View 的宽度必须从零开始增加。 在此期间,高度从当前显示的高度变为略微降低的高度
我正在尝试找到翻转 Rust 中 boolean 值的最快方法?即 false => true true => false 对于我的应用程序,我不关心 boolean 值的当前值,只关心它被翻转了。对
是否可以翻转 primefaces 中的数据表,以使标题位于左侧而不是顶部?我有下表: 如您所见
我在翻转 View 时遇到了一些问题。我的 View Controller 中有以下代码: - (void)loadFlipsideViewController { ProblemViewFl
我正在使用翻转动画在 View Controller 中的两个 View 之间制作动画。问题是动画发生时背景显示白色空白背景。我想显示黑色背景。 我尝试在 IB 和代码中将主视图的背景颜色设置为黑色。
请考虑下面的代码,并告诉我我做错了什么。 我想在两个 UIView 之间切换。 不知何故,当我从初始 View 翻转时,我只是得到翻转的 View ,没有动画。当我向后翻转时,动画显示得很好。 翻转是
我有一个 NSScrollView,需要在其中显示可变数量的 NSView。我制作了一个自定义 NSView,它的 isFlipped 返回 YES 并将我的 NSView 放入其中,然后将其设置为
我有一个 NSView 的子类,它重新实现了许多鼠标事件函数。例如,在 mouseDown 中从我使用的 NSEvent 获取点: NSEvent *theEvent; // <- argument
我是一名优秀的程序员,十分优秀!