---
title: 'Протестировать производительность дисков'
sidebar_label: 'Протестировать производительность дисков'
sidebar_position: 4
hide_table_of_contents: true
description: 'Как протестировать производительность дисков облачных серверов с помощью утилиты fio'
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'

# Протестировать производительность дисков

<Tabs queryString="benchmark-volumes">
  <TabItem value="linux">
    <TabItemLabel>
      Linux
    </TabItemLabel>

    Для полноценного тестирования производительности дисков облачных серверов (IOPS на чтение и запись и пропускной способности) используйте утилиту `fio`. Для тестирования можно использовать файл-тесты — подготовленные текстовые файлы с настройками тестирования.

    1. [Установите утилиту fio](#install-fio).

    2. [Подготовьте диск к тестированию](#prepare-volume).

    3. [Протестируйте производительность](#benchmark-in-linux).

    Результаты тестирования можно сравнить с [лимитами для сетевых дисков](/cloud-servers/volumes/about-network-volumes.mdx#network-volume-limits) и [локальных дисков](/cloud-servers/volumes/about-local-disks.mdx#local-disk-features).

    ## 1. Установить утилиту fio \{#install-fio}

    1. [Подключитесь к серверу](/cloud-servers/manage/connect-to-server.mdx).

    2. Установите утилиту `fio`:

       ```bash
       sudo apt update
       sudo apt install fio
       ```

    ## 2. Подготовить диск к тестированию \{#prepare-volume}

    :::danger

    Для тестирования не используйте диск, который содержит какую-либо информацию, — при подготовке к тестированию все данные на диске будут уничтожены.

    :::

    Для тестов вы можете использовать отдельный файл на диске, но результат может быть не показателен, особенно если вы используете корневой раздел.

    Для исключения влияния сервисов и производительности файловой системы на результат теста мы рекомендуем [создать пустой сетевой диск](/cloud-servers/volumes/create-volume.mdx) и заполнить его данными.

    1. [Создайте пустой диск](/cloud-servers/volumes/create-volume.mdx).

    2. [Подключите диск к облачному серверу](/cloud-servers/volumes/attach-detach-volume.mdx#attach-network-volume-to-server).

    3. Посмотрите название пустого диска:

       ```bash
       lsblk
       ```

       В ответе появится список дисков облачного сервера. Скопируйте название пустого диска.

    4. Заполните пустой диск данными:

       ```bash
       dd if=/dev/urandom of=/dev/<sdX> bs=4M
       ```

       Укажите `<sdX>` — название пустого диска, которое вы скопировали на шаге 3.

    ## 3. Протестировать производительность \{#benchmark-in-linux}

    Можно использовать:

    * [тестирование IOPS](#test-iops-in-linux) — случайная запись или чтение блоками 4 КБ;
    * [тестирования пропускной способности](#test-bandwidth-in-linux) — случайная запись или чтение блоками 4 МБ.

    ### Протестировать IOPS \{#test-iops-in-linux}

    <Tabs queryString="test-iops-in-linux">
      <TabItem value="4-kb-write">
        <TabItemLabel>
          Запись
        </TabItemLabel>

        1. Откройте CLI.

        2. Создайте файл-тест в текстовом редакторе `nano`:

           ```bash
           nano write.ini
           ```

        3. Добавьте в файл-тест содержимое:

           ```bash
           [writetest]
           size=2000M
           blocksize=4k
           filename=/dev/sdb
           rw=randwrite
           direct=1
           buffered=0
           ioengine=libaio
           iodepth=32
           ```

           Здесь:

           * `size` — общий размер файла для тестирования;
           * `blocksize` — размер одного блока данных для тестирования;
           * `filename` — путь к файлу, который будет использоваться для тестирования. В примере выше приведен тест с записью на диск с параметром `filename=/dev/sdb`;
           * `iodepth` — количество потоков.

        4. Выйдите из текстового редактора `nano` с сохранением изменений: нажмите **Ctrl+Х**, а затем **Y+Enter**.

        5. Запустите тест:

           ```bash
           fio write.ini
           ```

           В выводе теста посмотрите значение IOPS. Пример вывода:

           ```bash
           write: IOPS=118, BW=475KiB/s (487kB/s)(2000MiB/4310296msec); 0 zone resets
           ```
      </TabItem>

      <TabItem value="4-kb-read">
        <TabItemLabel>
          Чтение
        </TabItemLabel>

        1. Откройте CLI.

        2. Создайте файл-тест в текстовом редакторе `nano`:

           ```bash
           nano read.ini
           ```

        3. Добавьте в файл-тест содержимое:

           ```bash
           [readtest]
           size=2000M
           blocksize=4k
           filename=/dev/sdb
           rw=randread
           direct=1
           buffered=0
           ioengine=libaio
           iodepth=32
           ```

           Здесь:

           * `size` — общий размер файла для тестирования;
           * `blocksize` — размер одного блока данных для тестирования;
           * `filename` — путь к файлу, который будет использоваться для тестирования. В примере выше приведен тест с записью на диск с параметром `filename=/dev/sdb`;
           * `iodepth` — количество потоков.

        4. Выйдите из текстового редактора `nano` с сохранением изменений: нажмите **Ctrl+Х**, а затем **Y+Enter**.

        5. Запустите тест:

           ```bash
           fio read.ini
           ```

           В выводе теста посмотрите значение IOPS. Пример вывода:

           ```bash
           read: IOPS=320, BW=1280KiB/s (1311kB/s)(2000MiB/1599899msec)
           ```
      </TabItem>
    </Tabs>

    ### Протестировать пропускную способность \{#test-bandwidth-in-linux}

    <Tabs queryString="test-bandwidth-in-linux">
      <TabItem value="4-mb-write">
        <TabItemLabel>
          Запись
        </TabItemLabel>

        1. Откройте CLI.

        2. Создайте файл-тест в текстовом редакторе `nano`:

           ```bash
           nano write.ini
           ```

        3. Добавьте в файл содержимое:

           ```bash
           [writetest]
           size=2000M
           blocksize=4M
           filename=/dev/sdb
           rw=write
           direct=1
           buffered=0
           ioengine=libaio
           iodepth=32
           ```

           Здесь:

           * `size` — общий размер тестового файла;
           * `blocksize` — размер одного блока, с которым проводится операция чтения или записи;
           * `filename` — файл для записи или чтения. В примерах ниже приведены тесты с записью на диск с параметром `filename=/dev/sdb` — запись также уничтожит данные и файловую систему на диске, если они там есть;
           * `iodepth` — количество потоков.

        4. Выйдите из текстового редактора `nano` с сохранением изменений: нажмите **Ctrl+Х**, а затем **Y+Enter**.

        5. Запустите тест:

           ```bash
           fio write.ini
           ```

           В выводе теста посмотрите значение пропускной способности (BW). Пример вывода:

           ```bash
           write: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19974msec); 0 zone resets
           ```
      </TabItem>

      <TabItem value="4-mb-read">
        <TabItemLabel>
          Чтение
        </TabItemLabel>

        1. Откройте CLI.

        2. Создайте файл теста в текстовом редакторе `nano`:

           ```bash
           nano read.ini
           ```

        3. Добавьте в файл содержимое:

           ```bash
           [readtest]
           size=2000M
           blocksize=4M
           filename=/dev/sdb
           rw=read
           direct=1
           buffered=0
           ioengine=libaio
           iodepth=32
           ```

           Здесь:

           * `size` — общий размер тестового файла;
           * `blocksize` — размер одного блока, с которым проводится операция чтения или записи;
           * `filename` — файл для записи или чтения. В примерах ниже приведены тесты с записью на диск с параметром `filename=/dev/sdb` — запись также уничтожит данные и файловую систему на диске, если они там есть;
           * `iodepth` — количество потоков.

        4. Выйдите из текстового редактора `nano` с сохранением изменений: нажмите **Ctrl+Х**, а затем **Y+Enter**.

        5. Запустите тест:

           ```bash
           fio read.ini
           ```

           В выводе теста посмотрите значение пропускной способности (BW). Пример вывода:

           ```bash
           read: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19911msec)
           ```
      </TabItem>
    </Tabs>
  </TabItem>

  <TabItem value="windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    Для полноценного тестирования производительности дисков облачных серверов (IOPS на чтение и запись и пропускной способности) используйте утилиту CrystalDiskMark. Мы рекомендуем проводить тестирование на дополнительном диске облачного сервера.

    1. [Установите утилиту CrystalDiskMark](#install-crystaldiskmark).

    2. [Протестируйте производительность](#benchmark-in-windows).

    Результаты тестирования можно сравнить с [лимитами для сетевых дисков](/cloud-servers/volumes/about-network-volumes.mdx#network-volume-limits) и [локальных дисков](/cloud-servers/volumes/about-local-disks.mdx#local-disk-features).

    ## 1. Установить утилиту CrystalDiskMark  \{#install-crystaldiskmark}

    1. Скачайте [CrystalDiskMark](https://crystalmark.info/en/download/).

    2. Запустите установщик.

    3. Выполните шаги по установке утилиты.

    ## 2. Протестировать производительность \{#benchmark-in-windows}

    Перед проведением тестирования завершите процессы сторонних приложений или перезагрузитесь в безопасный режим. Мы рекомендуем проводить тестирование на дополнительном диске.

    Можно использовать:

    * [тестирование IOPS](#test-iops-in-windows) — случайная запись и чтение блоками 4 КБ;
    * [тестирования пропускной способности](#test-bandwidth-in-windows) — случайная запись и чтение блоками 4 МБ.

    ### Протестировать IOPS \{#test-iops-in-windows}

    1. Запустите CrystalDiskMark.

    2. Перейдите в **Profile**.

    3. Выберите **Demo**.

    4. Перейдите в **Settings** → **Settings**.

    5. В блоке **Profile:Demo**:

       5.1. В столбце **Type** выберите тип тестирования — RND. Этот тип тестирования отвечает за произвольное чтение и запись.

       5.2. В столбце **Block Size** выберите размер блока для тестирования — 4KiB.

       5.3. В столбце **Queues** выберите глубину очереди запросов для тестирования — 32.

       5.4. В столбце **Threads** выберите количество потоков загрузки — 1.

    6. Нажмите **OK**.

    7. В единицах измерения выберите **IOPS**.

    8. Нажмите **ALL**. Запустится тестирование IOPS диска.

    9. В выводе теста посмотрите значение IOPS на чтение и запись. Пример вывода:

       ```bash
       Read 325 IOPS
       Write 121 IOPS
       ```

    ### Протестировать пропускную способность \{#test-bandwidth-in-windows}

    1. Запустите CrystalDiskMark.

    2. Перейдите в **Profile**.

    3. Выберите **Demo**.

    4. Перейдите в **Settings** → **Settings**.

    5. В блоке **Profile:Demo**:

       5.1. В столбце **Type** выберите тип тестирования — SEQ. Этот тип тестирования отвечает за последовательное чтение и запись.

       5.2. В столбце **Block Size** выберите размер блока для тестирования — 4MiB.

       5.3. В столбце **Queues** выберите глубину очереди запросов для тестирования — 32.

       5.4. В столбце **Threads** выберите количество потоков загрузки — 1.

    6. Нажмите **OK**.

    7. В единицах измерения выберите **MB/s**.

    8. Нажмите **ALL**. Запустится тестирование пропускной способности диска.

    9. В выводе теста посмотрите значение пропускной способности на чтение и запись. Пример вывода:

       ```bash
       Read 106.5 MB/s
       Write 95.6 MB/s
       ```
  </TabItem>
</Tabs>

<Formbricks />
