UFS Need fair/uniform multithreaded I/O prioritization

Hello Gentlemen.

Periodically I make a copy of large volume (20-50 GB) virtual disks snapshots between physical HDDs, sometimes even several dozen images. During this process disk operations eats all performance. The system becomes almost unresponsive until writing finishes and thus other processes have difficulties with I/O, slow down and do not respond.

Please advise me on the topic subject tuning or setup guide.
 
In its full generality, your question is extremely difficult to answer. Storage systems and file system QoS is a huge research topic. I could give you a glib answer: There are some very good commercial storage systems that have built-in performance optimization for parallel IO. If you have half a million to spend, just buy one of those. But I don't think that's the answer you want.

To try to help, we first need to understand your setup, and what you are really doing. What is your setup? How many disks, what type of disks (SSD or spinning)? How are they attached? What file system? If it is a memory-hungry file system (ZFS!), what machine and how much memory? What is your normal foreground workload (how many processes, how many IOps, random or sequential, read or write)? What is your normal performance expectation? When you say "do not respond", do you mean that programs crash? Does the system crash? Or is the performance not what you expect? How do you do the disk snapshot?

By the way, 20-50GB is not a large volume. It is a tiny volume. A single disk drive can read or write that in 3-10 minutes, and a modern disk array in a matter of seconds. Many hundreds of these volumes would fit on a single disk. A significant volume is 20PB, a large volume would be 20EB.
 
Hello Gentlemen.

Periodically I make a copy of large volume (20-50 GB) virtual disks snapshots between physical HDDs, sometimes even several dozen images. During this process disk operations eats all performance. The system becomes almost unresponsive until writing finishes and thus other processes have difficulties with I/O, slow down and do not respond.

Please advise me on the topic subject tuning or setup guide.

Hi, nothing related to I/O but you can try
idprio
helps me for build a port for example, without use al resources(like the example in the man page)


and a long time ago
Geom Sched
but is abandoned long time ago
 
I didn't try that out yet, but the rctl(4) / RACCT tool has an option to limit filesystem i/o bandwidth:
readbps filesystem reads, in bytes per second
writebps filesystem writes, in bytes per second
readiops filesystem reads, in operations per second
writeiops filesystem writes, in operations per second
[...]
throttle slow down process execution; only supported for readbps, writebps, readiops, and writeiops.
 
Just to add another option, some copy tools (like rsync) will let you set a maximum bandwidth on the copy. This is not adaptive in any way, but it can work well enough to prevent resource starvation.
 
I like the options that PMc and Eric suggested. With some trial and error, that might work well. It isn't general, it isn't automatic, it won't get you "best paper award" at some research conference, but it might do the trick.
 
Back
Top