---
title: EC Turbo
description: "Ceph开源版本的EC特性主要用于对象存储这种整体读写操作，不支持条带局部读和写操作（如图1所示），在块存储中局部读写操作时读写放大非常严重，小块读写性能只有副本的几分之一，性能太差导致不可用。同时EC在条带读写过程中跨网络访问次数增多，也导致EC读写性能变差。EC Turbo特性支持局部读写（如图2所示），可有效解决条带读写过程中的读写放大的问题，提升读写性能。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengsdss/twp/kunpengsdss_19_0044.html
sourcePath: /source/zh/kunpengsdss/twp/kunpengsdss_19_0044.html
indexId: e0653be7543eeb02303a6cdf09566cb266e4f8b445dcbcbf1e3083b58a69dab851
---
# EC Turbo

#### 概述

Ceph开源版本的EC特性主要用于对象存储这种整体读写操作，不支持条带局部读和写操作（如图1所示），在块存储中局部读写操作时读写放大非常严重，小块读写性能只有副本的几分之一，性能太差导致不可用。同时EC在条带读写过程中跨网络访问次数增多，也导致EC读写性能变差。EC Turbo特性支持局部读写（如图2所示），可有效解决条带读写过程中的读写放大的问题，提升读写性能。

图1 Ceph开源版本仅支持EC满条带读写

图2 使能EC Turbo后支持局部读写


#### 技术原理

在Ceph中EC条带最小存储单元大小为4KB，当用户仅读取4KB单元或写入4KB单元的数据时，Ceph开源版本不支持局部修改，这样就导致当读写小块数据时，读写放大很严重。EC Turbo特性支持EC条带的局部修改，仅读取用户需要的单元数据块，可以有效降低读写放大。当读取超过4KB块大小，就需要跨条带读取，这样一个8KB的操作就需要放大为两次4KB的磁盘读操作，相比副本本地的一次8KB读操作，性能相差一倍。EC Turbo特性将EC条带本地存储单元加大（如1MB），同时支持小条带的修改，当读取8KB、32KB等小块IO时，会和副本一样只在本地一次读取，提高了读性能。另外为减少网络传输采用算子下推技术以及为减少EC条带不必要的补零操作而采取精简条带措施都是为了减少读写过程中的写放大。

图3 EC Turbo行存转列存方案


#### 预期效果

Ceph开源版本的EC性能只有副本性能的40%左右，通过降低IO过程中读写放大，将EC的读写性能提升到副本性能的80%以上。
