Questions tagged «disk-cache»

2
当内存需求上升时,Linux无法释放大磁盘缓存
在2.6.31-302 x86-64内核上运行Ubuntu。总体问题是我的“高速缓存”类别中的内存一直在增加,即使我们的应用程序需要它也不会被释放或使用。 这就是我从“免费”命令中得到的东西。乍一看,这些都与众不同。 # free total used free shared buffers cached Mem: 7358492 5750320 1608172 0 7848 1443820 -/+ buffers/cache: 4298652 3059840 Swap: 0 0 0 有人要说的第一件事是:“不用担心,Linux自动管理该内存。” 是的,我知道内存管理器应该如何工作;问题在于它没有做正确的事。这里的“缓存” 1.4 GB似乎是保留的,无法使用。 我对Linux的了解告诉我3 GB是“免费”的。但是系统的行为则相反。在高峰使用期间用完1.6 GB的实际可用内存后,一旦需要更多内存(第一列的“可用”接近0),就会调用OOM杀手,杀死进程,并开始出现问题。即使 -/ + buffers / cache行中的“ free”仍然具有约1.4 GB的“ free”。 我已经调整了关键流程的oom_adj值,因此它不会使系统崩溃,但是即使那样,重要的流程也将被杀死,我们永远也不想达到这一点。尤其是从理论上讲,如果仅驱逐磁盘缓存,则1.4GB仍“可用”。 有人知道这里发生了什么吗?互联网上充斥着关于Linux“免费”命令和“为什么我没有任何可用内存”的愚蠢问题,因此我找不到关于此问题的任何信息。 首先出现在我脑海中的是交换已关闭。我们有一个坚定的系统管理员。如果有备份,我可以公开解释。这会引起问题吗? 运行后免费echo 3 > /proc/sys/vm/drop_caches: # free …

2
如何设置缓存网络共享的NFS服务器?
用户数据存储在两个相当大的(> 1 PB)OpenStack Swift存储集群中。让他们成为集A和集B。 此外,还有一些PoP需要与该数据进行交互。这些PoP中的服务器实际上是无盘的,这意味着没有用户数据存储在它们上或从未下载到它们。PoP点可分为一般世界地区(如北美,南非,中欧等)。 一些PoP距离任何集群的Swift端点都相距很远,从而导致了不希望的延迟。为了减轻这种情况,我想在每个区域中设置一个缓存网关服务器,该服务器将r / w请求缓存到最近的集群。 当前,任何PoP中的客户端都通过永久安装的swift虚拟文件系统(该FUSE模块将Swift Object Storage作为块设备(或多或少)安装)访问用户数据。但是,svfs最初并不稳定,将来,客户端应通过NFS访问缓存服务器。 这是所需架构的一个分支的示意图: +------------------+ +------------------+ NFS +------------------+ | Cluster A | SVFS | Region 1 Cache +----------> R1 PoP a Client | | +----------------> | | | |Persistent Storage| |Ephemeral Storage+----+ |Generates R/W Load| +-----------------++ +------------------+ | +------------------+ | | | …

2
带有屏障的SATA驱动器上的写缓存的安全性
最近,我一直在阅读有关SATA驱动器的写缓存,NCQ,固件错误,障碍等信息,但我不确定在电源故障的情况下哪种最佳设置可以确保数据安全。 据我了解,NCQ允许驱动器对写入进行重新排序以优化性能,同时让内核了解已物理写入了哪些请求。 写入缓存使驱动器更快地处理请求,因为它不等待将数据写入物理磁盘。 我不确定这里的NCQ和Write缓存如何混合使用... 文件系统,特别是日记系统,需要确定何时记录了特定请求。同样,用户空间进程使用fsync()强制刷新特定文件。在文件系统确定数据已写入磁盘之前,对fsync()的调用不应返回。 有一个功能(FUA,强制单位访问),我仅在SAS驱动器上看到过,该功能强制驱动器绕过缓存并直接写入磁盘。对于其他所有方面,都有写障碍,这是内核提供的一种机制,可以触发驱动器上的缓存刷新。这将强制记录所有缓存,而不仅仅是关键数据,从而在滥用时减慢了整个系统的速度,例如使用fsync()。 然后,存在带有固件错误的驱动器,或者故意谎称何时物理写入数据。 话虽这么说..有几种方法可以设置驱动器/文件系统:A)禁用NCQ和写入缓存B)启用NCQ仅C)启用写入缓存D)启用NCQ和写入缓存 我正在假设启用了障碍。顺便说一句,如何检查它们是否真正启用? 如果断电,则在主动写入磁盘时,我的猜测是,对于文件系统日志和数据,选项B(NCQ,无高速缓存)都是安全的。可能会有性能损失。 如果使用障碍或FUA,则选项D(NCQ + cache)对于使用fsync()的文件系统日志和应用程序将是安全的。这对于在缓存中等待的数据将是不好的,并且要由文件系统来检测它(校验和),并且至少文件系统不会(希望)处于不稳定状态。性能方面,它应该更好。 但是,我的问题仍然存在……我是否想念任何东西?还有其他变量要考虑吗?是否有任何工具可以确认这一点,并且我的驱动器运行正常?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.