哪个写是正确的?看看I / O缓存方法

作者: Laura McKinney
创建日期: 1 四月 2021
更新日期: 25 六月 2024
Anonim
什么是HTTP缓存?
视频: 什么是HTTP缓存?

内容


资料来源:Kgtoh / Dreamstime.com

带走:

应用程序速度在很大程度上取决于高速缓存I / O速度。在这里,我们比较了不同的缓存I / O方法。

应用程序性能植根于速度–速度是完成应用程序对基础结构的要求所必需的读写请求。存储负责返回I / O(输入/输出)请求的速度,而选择的用于提交写入和传递读取的方法对应用程序性能产生深远的影响。在当今行业中,一种常见的方法是使用SSD来在传统的旋转磁盘存储,混合阵列或全闪存阵列上进行缓存。大多数缓存解决方案都加快了对应用程序的读取,但真正的问题仍然是,“哪个写是正确的?”

让我们看看为什么写入优化会如此严重地影响您的应用程序性能。写入I / O表示它是未写入基础存储中的新数据。例如,在传统的SAN存储中,写操作直接写在基础存储上,然后返回到应用程序。对于不断写入新数据的应用程序(主要是大型数据库应用程序(SQL等)),传统的旋转磁盘无法跟上。在SSD上进行缓存已成为一种解决方案,该解决方案允许将写入写入本地并根据应用程序需求的频率进行缓存。但是,写缓存与基础存储之间的关系有几种方法会导致性能上的巨大差异。

这些是I / O编写的3种形式:

  1. 全写(在高速缓存周围)
  2. 直写(通过缓存)
  3. 回写(从缓存)

这三种形式都具有主要基于要写入的数据类型的不同优点:顺序与随机。顺序I / O通过基础磁盘(例如文件或视频流)进行了最优化,而随机I / O通过缓存进行了优化。大多数缓存设备没有动态智能,无法根据数据类型改变写入技术的形式。让我们了解三种I / O编写形式之间的区别。

全写

写回,也称为只读缓存模式,纯粹是为了释放用于缓存读取的空间而有益。传入的I / O永远不会到达缓存。 I / O直接写入永久存储,而无需缓存任何数据。

如果不使用缓存,可能有什么好处?它有助于减少高速缓存被写入I / O淹没,而该写入I / O随后将不会被重新读取,但是具有以下缺点:对最近写入的数据的读取请求将导致“高速缓存未命中”,并且必须从较慢的大容量存储中读取,经历更高的延迟。如果您的应用程序是事务性的,就像大多数关键任务应用程序一样,则应用程序速度将减慢,并且I / O队列将增加。从本质上讲,此模式的价值在于罕见的用例,因为它耗时,缓慢且性能不佳。


直写

如今,此方法通常用于缓存和混合存储解决方案。直写被称为读取缓存模式,这意味着所有数据都同时写入高速缓存和基础存储。仅在将其写入存储后,才认为写入已完成。听起来确实很安全……但是存在速度缺陷。

问题出在这里:每个写入操作在缓存中然后在永久存储中执行两次。在应用程序可以继续之前,永久性存储必须将I / O提交返回到缓存,然后再返回到应用程序。此方法通常用于实现故障恢复能力,并避免使用高速缓存实施故障转移或HA策略,因为数据位于两个位置。但是,直写会导致延迟,因为I / O提交取决于永久存储的速度,这与CPU和网络的速度不匹配。您的速度仅与最慢的组件一样快,而“直写式”可以严重限制应用程序的速度。

没有错误,没有压力-在不破坏生活的情况下创建可改变生活的软件的分步指南

当没有人关心软件质量时,您就无法提高编程技能。

回写

回写可以提高系统速度,因为系统不必等待写入到基础存储的内容。

当要写入数据时,Write-Back会将数据“全部完成”放入高速缓存中,并保留数据以便稍后写入存储磁盘。

这解决了许多延迟问题,因为系统不必等待这些深度写入。

在正确的支持下,回写可能是多阶段缓存的最佳方法。当高速缓存具有大量内存(即以TB为单位而不是GB的内存为单位)以处理大量活动时,它会有所帮助。复杂的系统还将需要多个固态硬盘,这会增加成本。考虑电源故障或其他可能丢失关键数据的情况,这一点至关重要。但是有了正确的“高速缓存保护”,Write-Back确实可以加快架构,并且不会带来任何负面影响。例如,回写系统可以利用RAID或冗余设计来确保数据安全。

更加精巧的系统将帮助高速缓存与SAN或基础存储磁盘“按需”相互配合,根据磁盘的工作量将写入写入深度存储或高速缓存。

Write-Back的设计理念反映了当今先进的数据处理系统解决大问题的解决方案。通过创建更复杂的体系结构并以复杂的方式使用缓存,Write-Back消除了延迟问题,尽管它可能需要更多的开销,但它允许更好的系统增长和更少的烦恼。