草庐IT

High-Performance

全部标签

performance - 用于分片 + 冗余 MongoDB 环境的硬件

我正在尝试从头开始规划一个新的数据库环境,我想知道需要多少台服务器以及它们应该提供多少性能。由于我希望它很快,我正在考虑使用SSD内存和RAM负载。然而,闪存很昂贵,并且占据了服务器成本的最大部分。因此,整个系统应该从一开始就设置为水平扩展,这样我就可以在需要更多存储/性能时添加更多节点。首先,我正在考虑使用2个分片,每个分片由一个主站和一个副本从站组成,以实现冗余。MongoDB文档建议使用1个主服务器和2个从服务器,但恐怕这不在可用预算之内,因为这些服务器中的每一个都将配备大约200GB的RAM和6x400GBSSD作为Raid10。使用分片时,还建议使用3个配置服务器以实现故障安

performance - 如何限制 RAM 以测试低内存情况?

我正在尝试重现一个似乎在用户用完大量RAM时出现的错误。限制计算机可以使用的可用RAM或填满大部分可用RAM的最佳方法是什么?我宁愿这样做,而无需物理删除内存,也无需运行一堆任意的、内存密集型程序(即Photoshop、Quake等)。 最佳答案 使用虚拟机并在其上设置资源限制以模拟您想要的条件。VMWare是该领域的领导者之一,他们拥有freevmwareplayer这让你可以做到这一点。 关于performance-如何限制RAM以测试低内存情况?,我们在StackOverflow上

performance - R 包 nlt/adlift/ebayesthresh 使用大量内存;如何提高性能?

这一切都始于一个R包,我需要糟糕地使用('nlt'),它有2个其他(相当大的)包依赖项('adlift'、'ebayesthresh')。我需要它来分析大约4000个点的数据样本。算法创建了许多“隐藏”向量,因此即使乍一看您认为自己有足够的内存来加载数据样本并对其进行处理,但事情很快就变糟了。在这一点上,我应该提到我可以使用Ubuntux64和Windowsx64以及4GB的RAM。我猜是出于纯粹的好奇心和受虐狂,我决定在AmazonEC2实例上试一试。我最终尝试了其中的几个,然后停在了High-MemoryExtraLargeInstance17.1GB内存和6.5个ECU上,当我再

performance - 如何将我的结构变量放入 CPU 缓存以消除主内存页面访问时间?选项

很明显,没有明确的方式或某些系统调用可以帮助程序员将变量放入CPU缓存中。但我认为某种编程风格还是设计得很好算法可以使增加的可能性成为可能变量可以缓存到CPU缓存中。这是我的例子:我想在数组末尾附加一个8字节结构相同类型的结构,在全局主存储器中声明地区。这个过程不断重复400万次操作。这个过程需要6秒,每个操作需要1.5us。我想这个结果说明这两个内存区域没有被缓存。我从cache-obliviousalgorithm那里得到了一些线索,所以我尝试了几个增强这一点的方法。到目前为止,没有任何增强。我认为一些聪明的代码可以减少耗时,最多10到100次。请给我指路。------------

performance - 我应该更喜欢跨一次内存访问来读取还是写入?

众所周知,以一种跨步方式访问内存最有利于性能。在以下情况下我必须访问一个内存区域才能阅读,我必须访问另一个区域进行写作,并且我只能以一种跨步方式访问两个区域之一,我应该更喜欢阅读strideone还是写作strideone?一个简单而具体的例子是类似BLAS的复制和置换操作,如y:=Px。置换矩阵P完全由某个置换向量q(i)定义。它有一个对应的逆置换向量qinv(i)。可以将所需的循环编码为y[qinv(i)]=x[i]或y[i]=x[q(i)]其中前者从x读取步幅一,后者写入到y步幅一。理想情况下,始终可以对这两种可能性进行编码,在有代表性的条件下对其进行分析,然后选择更快的版本。假

performance - 当mongodb内存不足时会发生什么?

例如,我有20GB数据的数据库,只有2GB内存,交换已关闭。我能找到并插入数据吗?性能会有多差? 最佳答案 最好用谷歌搜索,但许多消息来源说,当您的工作集超出RAM大小时,性能会显着下降。分片可能是一个有趣的选择,而不是添加更多的RAM..http://www.mongodb.org/display/DOCS/Checking+Server+Memory+Usagehttp://highscalability.com/blog/2011/9/13/must-see-5-steps-to-scaling-mongodb-or-any-

performance - JavaFX 吃掉我的内存?

在对标题感到沮丧之前,我想澄清一下我是JavaFXUI的新手。我作为一名开发人员已经9年了,使用Swing,目前我决定尝试使用JavaFX。网上的例子表明,与Swing相比,JavaFX确实可以创建漂亮的GUI。也许我试图以错误的方式创建和部署GUI,但有一件事是肯定的。JavaFXPane的加载速度比Swing慢,并且消耗更多的内存。使用JAVAFX重新设计了相同的GUI,它需要将近200Mb,而SwingGUI只需要50Mb。这里我给出一个代码示例,说明如何使用FXML以编程方式创建GUI。publicclassPanelCreator{privateFXMLPaneloginFX

performance - 内存分配功能是否表示不再使用内存内容?

在处理某些数据流(例如来自网络的请求)时,通常使用一些临时内存。例如,一个URL可以拆分为多个字符串,每个字符串都可能从堆中分配内存。这些实体的使用通常是短暂的,总内存量通常相对较小,应该适合于CPU缓存。此时,用于临时字符串的内存被释放,字符串内容很可能只存在于缓存中。但是,CPU不知道正在释放的内存:释放只是内存管理系统中的一个更新。因此,当CPU缓存用于其他内存时,CPU可能会不必要地将未使用的内容写入实际内存,除非内存释放以某种方式向CPU指示内存不再使用。因此,问题变成:内存管理功能释放内存是否表示可以丢弃相应内存的内容?是否有一种方法可以向CPU指示内存不再使用?(至少,对

performance - 内存与性能

这一直是我编程时的想法,所以我想我会在它真正到达我之前把它吐出来。我应该更担心什么?应用程序消耗的内存,或者它所需要的性能。我的意思是我应该专注于为应用程序使用更少的内存并使用更多的性能(例如,通过数据库加载,并在使用后转储它),还是使用更少的性能并使用更多的内存(例如缓存)我的申请条件:-这是一个服务器应用程序,所以它不打算在台式机等上运行,我有6GB的内存,我有一个四核。 最佳答案 您的问题引起了很多禅宗式的回答。我希望做得更好。你的内存限制是硬的:如果你超过了它,即使有虚拟内存,你的应用也会爬,你会成为所有人的笑柄。您的CPU

performance - Haskell 的局部属性是什么?

现代CPU已经过优化,因此访问和修改内存中的同一位置(时间局部性)以及内存中的连续位置(空间局部性)是非常快速的操作。现在,由于Haskell是一种纯粹不可变的语言,你自然不能覆盖现有的内存块,这可能会使像foldl这样的东西比带有a的for循环慢得多连续访问的结果变量将在C中。Haskell是否在内部采取任何措施来减轻这种性能损失?总的来说,它关于局部性的属性是什么? 最佳答案 一般规则是,对于“普通”Haskell编程,您几乎无法(如果有的话)控制内存布局和内存位置。但是,确实存在许多允许此类控制的更高级功能,以及在这些功能之上