[kvm]硬盘IO优化

简介: [kvm]硬盘IO优化

硬盘类型选择

在CentOS7中有IDE、SATA和virtio三种,建议用virtio三种。virtio是半虚拟化的,性能媲美原生。

缓存模式选择

缓存模式有五种,不过常用的只有三种:writethrough、writeback和none。centos默认为none

  • writethrough:数据直接写入硬盘,不使用缓存。优点是操作简单,但写入速度较慢。
  • writeback:数据更新时只写入缓存cache,数据更新时再写入到硬盘。优点是写入速度快;缺点是一旦数据从缓存写入到硬盘的时候发生掉电,数据无法找回。
  • none:数据写入到宿主机的硬盘缓存,性能还行。

性能:writeback > none > writethrough

安全:writethrough > none > writeback

异步AIO读写方式选择

aio分两种:native和thread

  • native:kernel的原生异步IO
  • thread:线程模拟异步,缺点不少。

选择native即可。

硬盘IO调度器选择

目前linux的IO调度器有三种:NOOP、Deadline、CFQ

  • Deadline:用过期时间排序io操作顺序,保证先出现的io请求有最短的延迟时间。适用于读操作较多的场景。
  • NOOP:设计最简单,读写较多时会造成效率降低。
  • CFQ:完全公平队列。性能均衡,但影响数据连续读写。适用于有大量进程的多用户系统。

如果要更改模式:

echo SCHEDULER_NAME > /sys/block/DEVICE_NAME/queue/scheduler
# 示例
echo cfq > /sys/block/sdb/queue/scheduler
相关文章
|
23天前
|
人工智能 Cloud Native Java
云原生技术深度解析:从IO优化到AI处理
【10月更文挑战第24天】在当今数字化时代,云计算已经成为企业IT架构的核心。云原生作为云计算的最新演进形态,旨在通过一系列先进的技术和实践,帮助企业构建高效、弹性、可观测的应用系统。本文将从IO优化、key问题解决、多线程意义以及AI处理等多个维度,深入探讨云原生技术的内涵与外延,并结合Java和AI技术给出相应的示例。
81 1
|
5月前
|
Java 开发者
Java IO流实战技巧:如何优化InputStream/OutputStream和Reader/Writer的使用?
【6月更文挑战第26天】Java IO流优化涉及缓冲、资源管理、字符编码和流式处理。使用Buffered流提高读写效率,如`BufferedInputStream`和`BufferedReader`。确保资源关闭使用try-with-resources,如`try (InputStream is = ...) {...}`。处理文本时指定编码,如`InputStreamReader(is, StandardCharsets.UTF_8)`防止乱码。流式处理大文件,分块读写避免内存溢出,以减少内存占用。这些技巧能提升程序性能和健壮性。
235 0
|
6月前
|
存储 搜索推荐 文件存储
IO、存储、硬盘、文件系统相关常识
IO、存储、硬盘、文件系统相关常识
52 2
|
5月前
|
SQL 数据处理 API
实时计算 Flink版产品使用问题之holo的io以及cpu使用较为稳定,sink端busy一直在20%左右,有时候50%,该如何优化
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
Java 大数据 数据库
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!
【Spring底层原理高级进阶】Spring Batch清洗和转换数据,一键处理繁杂数据!Spring Batch是如何实现IO流优化的?本文详解!
|
6月前
|
NoSQL Java Linux
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
【Linux IO多路复用 】 Linux 网络编程 认知负荷与Epoll:高性能I-O多路复用的实现与优化
183 0
|
6月前
|
Rust
【一起学Rust · 项目实战】命令行IO项目minigrep——重构优化模块和错误处理
【一起学Rust · 项目实战】命令行IO项目minigrep——重构优化模块和错误处理
68 0
|
6月前
|
监控 分布式数据库 流计算
Flink 异步IO优化任务
Flink 异步IO优化任务
90 0
|
移动开发 Java 数据处理
深入理解Java IO流:补充和优化
深入理解Java IO流:补充和优化
|
Java C++
多线程使用HashMap,HashMap和HashTable和ConcurrentHashMap区别(面试题常考),硬盘IO,顺便回顾volatile(二)
多线程使用HashMap,HashMap和HashTable和ConcurrentHashMap区别(面试题常考),硬盘IO,顺便回顾volatile