Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 May 2016 08:39:30 -0600
From:      Warner Losh <imp@bsdimp.com>
To:        fs@freebsd.org
Subject:   ZFS and SSD, trim caused stalling
Message-ID:  <5E710EA5-C9B0-4521-85F1-3FE87555B0AF@bsdimp.com>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]
> What do you think? In some cases it’s clear that TRIM can do more harm than good.

I think it’s best we not overreact.

This particular case is cause by the nvd driver, not the Intel P3500 NVME drive. You need
a solution (3): Fix the driver.

Specifically, ZFS is pushing down a boatload of BIO_DELETE requests. In ata/da land, these
requests are queued up, then collapsed together as much as makes sense (or is possible).
This vastly helps performance (even with the extra sorting that I forced to be in there that I
need to fix before 11). The nvd driver needs to do the same thing.

I’ve implemented, but can’t find in my hg queues, code to do the deferral. After it gets the
first trim, it starts a 100ms timer and pushes all the trims together to the drive. This vastly
unclogs the drive and makes things snappier. I never committed this code upstream because
I never committed it to the Netflix repo. We found better ways in our application to avoid the
thing that was generating a boatload of TRIMs. I also never made them robust.

I’d be extremely hesitant to tossing away TRIMs. They are actually quite important for
the FTL in the drive’s firmware to proper manage the NAND wear. More free space always
reduces write amplification. It tends to go as 1 / freespace, so simply dropping them on
the floor should be done with great reluctance.

Warner


[-- Attachment #2 --]
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJXK1siAAoJEGwc0Sh9sBEAwBIQAOboHkv2tGcS02W6H3py4h7u
oNIcVqR/dnf1WN35TKLQbYJFsfFXqGxFVkVl6yP7bjDj10XlyCj3i0dHiA9wi83u
F+Y49TxmKUoYtSpmrB/qFLCRZg/RTBPbMAtMkbs/GhuSiGLT8yZ72ZZpDjufuBwl
QcCiekZGIPaaH3CRtnysmWuGM7DS54uFdeUGBiiYxirAI3JXDYFZwN0yIPIZI6EK
uiH3sO7JmocLg9FJooHwTQ1uIWLH6ujNQibzX4zzv1S/x3qsTVs1WiniFFCuN1MV
PJy1cG8cH+WZSFggoDf7qDp4/XJHKPHuUaCDDDYmzpf569ID+emcLvKz0wEkjHyK
+psl53DMXBAHPXg9witTqoe/tcxfc4hw3SOsVtVs3wF10+GhIfDxyBc1ynCvfTs5
XPJApJYXYM07XCvk68Vh+2j8SJRgojIsycRNSFK51Qv/tm0m0ept5k+FL/GE+/sc
L4+T8W84sdgM0dwuK3fPua2G2gNHjEoknmlMbdsrXJquCXACx64aGpNDnwvF0ZZZ
T3iPH2sZfrzK3p+Gx6vHJI34NBAUv6wqDn/Mc6z/UZJyYCHrBKKrAregxxI7KXJa
/s7FBeKS3Ysz4SKvmemV03reqDI0ep+nXC1y/4cZoiCakL7TNSk9rjOKmupvQG+9
bNSabmhoVEFeK0Cej4nF
=50Cy
-----END PGP SIGNATURE-----

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5E710EA5-C9B0-4521-85F1-3FE87555B0AF>