19 commentaires
ah je vois en gros le thread poll s'endort trop vite c'est ça ?
non pas encore bpftrace j'ai juste perf pour le moment j'ai vu des context switches pas mal
iopoll ça demande que le device soit en mode polling aussi non ? mes nvme sont pas tous configurés comme ça
je vais baisser les idle times du sq_thread via /proc/sys/kernel/io_uring/sq_thread_idle
ok j'ai trouvé la doc pour io_uring_register_ring_fd avec IORING_REGISTER_SQ_RING_FDS pour contrôler les idle times. Je vais le coder
oups merci pour la précision j'ai relu. en gros j'appelle io_uring_register pour set les params du sq_thread. ok j'implémente ça
incroyable ! j'ai set l'idle timeout à 0ms et le lap à 1ms et le throughput a fait x3 en lectures et x2 en écritures. et les context switches ont quasi disparu
carrément j'aurais jamais pensé à aller dans ces tréfonds sans aide thx pour le coup de main
Laisser une réponse
Vous devez être connecté pour poster un message !
salut à tous on essaie de tirer le max de nos nvme pour une db custom et on a migré notre moteur i/o sur io_uring mais on voit pas les gains de perf escomptés c'est même parfois pire qu'avec libaio. on pousse des millions de petites écritures aléatoires c'est sur un kernel 5.15