[ansible deploy tikv] fio mixed randread and sequential write test: randread iops of tikv_data_dir disk is too low: 3585 < 10000

跑 ansible-playbook bootstrap.yml 时,检测tikv磁盘 iops 时,没通过

在这个步骤挂了
TASK [machine_benchmark : Preflight check - Does fio mixed randread and sequential write iops of tikv_data_dir disk meet requirement - randread]

报错信息
{“changed”: false, “msg”: “fio mixed randread and sequential write test: randread iops of tikv_data_dir disk is too low: 3585 < 10000, it is strongly recommended to use SSD disks for TiKV and PD, or there might be performance issues.”}

环境
os:Ubuntu 18.04.3 LTS
tidb:v3.1.1

硬盘已经是ssd,型号是 SAMSUNG MZ7LH480HAHQ-00005,我看iops随机读98k,肯定是达标的。

问题
现在跑出来结果是3585,距离要求的10000,差距较大。
mount nodelalloc,noatime 都没使用。使用上的话,会提高这么多?达到10000这个值?
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)

  1. 确认下 ansible inventory.ini文件里 配置的目录是 正确的 ssd盘的挂载目录吗?
  2. 如果目录正确,按照文档配置下参数,会有比较大的帮助,具体可以自己搜索这些参数了解下。多谢。
  1. inventory.ini 中配置的目录是默认值 deploy_dir = /home/tidb/deploy。机器上,就1个ssd硬盘,直接挂载在 /
  2. 好,我再配置下 mount 参数,到时候再压测下,看看提升有多大

好的,有问题在反馈,多谢

改了 mount 配置

/dev/sda1 on / type ext4 (rw,noatime,nodelalloc,errors=remount-ro,data=ordered)

但是基本无提升。请问,是否一般ssd都能达到1w这个值?还是要比较好的ssd才能达到?

文档参数,说的是哪些参数?能否帮忙发个文档链接?

  1. nvme的ssd应该都差不多能到
  2. 麻烦执行下 df -h , fdisk -l , lsblk -f
  3. 麻烦反馈下 ansible部署目录 /log 下的 ansible.log日志
  4. 硬盘厂家是否有 fio 的测试脚本能否测试下硬盘的 随机读值,是否硬盘有问题?
  1. 所以,非nvme的,基本达不到?我刚好在 nvme,非nvme上硬盘都试了,都只有3500左右
  • df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             32G     0   32G   0% /dev
tmpfs           6.3G  2.0M  6.3G   1% /run
/dev/sda1       440G   26G  392G   7% /
tmpfs            32G     0   32G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            32G     0   32G   0% /sys/fs/cgroup
overlay         440G   26G  392G   7% /var/lib/docker/overlay2/09cad73146eb6f21342841eb1a2dcf24802b18966bb9220a7f8ba6c358193b28/merged
shm              64M     0   64M   0% /var/lib/docker/containers/02ce8667d58ecfe0686392a4dbe7af20300b8aab40435602bdea488f12d9e3bf/mounts/shm
tmpfs           6.3G     0  6.3G   0% /run/user/1000
  • fdisk -l
Disk /dev/sda: 447.1 GiB, 480103981056 bytes, 937703088 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x0bf4838f

Device     Boot Start       End   Sectors   Size Id Type
/dev/sda1  *     2048 937701375 937699328 447.1G 83 Linux
  • lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
└─sda1 ext4         20b704cb-a5fe-4919-854c-19c0d7a0e56c /
sr0
  1. 日志 ansible.log (62.5 KB)
  2. 暂时没找到硬盘厂家的fio测试脚本。硬盘应该无问题,好几台机器,都跑出来一样的值

好像这个问题在Ubuntu 18.04上会有

  1. 查看ansible 日志可以看到报错:
    fio mixed randread and sequential write test: No I/O performed by psync

  2. 搜索报错

https://github.com/axboe/fio/issues/453

  1. 可以安装 centos或者redhat 测试一下,多谢。
  1. 这个日志是我今天再跑了下,报错 fio mixed randread and sequential write test: No I/O performed by psync。但,上次其实没报这个错。
    即使今天,从日志中应该也可以看到,10.2.1.75 是报错了。但 10.2.1.7410.2.0.75 并没有报错,报的是我说的iops的问题 randread iops of tikv_data_dir disk is too low: 3586 < 10000。我在乎的是这个iops不达标的问题,能否再帮忙看看?谢谢。
    是否方便也提供下,基本上,什么ssd能达标,什么ssd不能达标?不同接口的ssd的iops大致在多少范围?
  2. 暂时不方便装centos或redhat,我们主要都是ubuntu
  1. 就是查到ubuntu可能有这个问题,所以建议你用其他的操作系统先确认下。 现在不一定是盘有问题,有可能是操作系统有问题,所以建议你使用其他的操作系统测试下相同的盘

  2. 理论上你根据硬盘的规格标准就可以了。

所以,你的意思是,因为 ubuntu 有bug,所以可能导致这个值(3500) 不准确?

那,假如,我装了centos跑过了,证明硬盘没问题。

正式环境,ubuntu 系统部署 tidb,应该也没问题,是吧?ubuntu 的这个bug,只是fio的bug,导致fio测试的值有问题,是吗?

1.是的,先证明下盘是正常的

  1. 我感觉上面发的链接好像是 io 会有问题,会对io有影响吧。您可以找你们操作系统的同事帮你确认下。

更正下,nvme盘,测试了,结果是2w左右

所以,现在问题变成了,基本上,要多好的ssd硬盘,或者是什么接口的ssd,才可以?
比如,nvme接口的ssd才可以,sata接口的ssd,基本达不到。
有什么推荐吗?

线上大家部署的,一般都是 nvme 接口么?

  1. 生产环境推荐尽量满足要求,一般为 nvme 的盘。
  2. 如果不满足,也尽量使用性能比较接近的盘,

可以看一下这篇文章https://asktug.com/t/topic/2686 上面有一款SSD推荐 具体还是看压测

1 个赞