On Tue, Mar 23, 2021 at 8:39 AM Richard Shaw <hobbes1...@gmail.com> wrote:
>
> I'm getting significant iowait while writing to a 100GB file.

High iowait means the system is under load and not CPU bound but IO
bound. It sounds like the drive is writing as fast as it can.   What's
the workload? Reproduce the GUI stalls and capture all of the
following:

sudo iostat -x -d -m 5

This is part of sysstat package (you can disable the service and timer
units it installs). Probably best to copy/paste into a plaint text
file and put it up in a file share service, most anything else is
going to wrap it, making it hard to read. A minute of capture while
the workload is proceeding is enough. Also capture a few

grep -R . /proc/pressure

And each of these (workload doesn't need to be running)

lsblk -o NAME,FSTYPE,SIZE,FSUSE%,MOUNTPOINT,UUID,MIN-IO,SCHED,DISC-GRAN,MODEL
uname -r
mount | grep btrfs

>I have already made it nocow by copying it to another directory, marking the 
>director nocow (+C) and using cat <oldfile> <newfile> to re-create it from 
>scratch.
>
> I was under the impression that this should fix the problem.

It depends on the workload for this file. Was the 100G file fallocated
or created as a sparse file? File format?

>
> On a tangent, it took about 30 minutes to delete the old file... My system is 
> a Ryzen 5 3600 w/ 16GB or memory but it is a spinning disk. I use an NVME for 
> the system and the spinning disk for /home.

filefrag 100G.file
What's the path to the file?

>
> Currently I'm getting random GUI freezes due to the iowait problem and my HDD 
> indicator light basically stays on solid for over an hour now.
>

Have sysrq+t ready in a shell but don't issue it. Reproduce this
problem (the GUI freezes) and then issue the sysrq+t. Depending on how
many processes, this could exceed both the kernel message buffer and
the journald rate limiter. Either use log-buf-len=8M boot parameter,
and then dmesg will have the whole sysrq+t. The other option is
temporarily turn off journald rate limiting in journald.conf

#RateLimitIntervalSec=30s
#RateLimitBurst=10000

Add a 0 should work. Restart journald. Issue sysrq+t. Output to a file
by 'journalctl -k -o short-monotonic --no-hostname > journal.log'

I suggest opening a bug against the kernel, and post the URL here so I
can tag it. Attach the iostat output and dmesg/journalctl output as
files to that bug, and everything else can just go in the description.

Also note any other customizations to /proc or /sys that differ from
Fedora defaults.


-- 
Chris Murphy
_______________________________________________
users mailing list -- users@lists.fedoraproject.org
To unsubscribe send an email to users-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/users@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to