Little research how rm -rf and tar kill server

Mark Felder feld at FreeBSD.org
Tue Mar 31 14:55:05 UTC 2015



On Mon, Mar 30, 2015, at 20:24, Artem Kuchin wrote:
> 30.03.2015 19:09, Mark Felder пишет:
> >
> > On Mon, Mar 30, 2015, at 11:04, Artem Kuchin wrote:
> >> 30.03.2015 18:57, Mark Felder пишет:
> >>> On Mon, Mar 30, 2015, at 10:53, Artem Kuchin wrote:
> >>>> This is normal state, not under rm -rf
> >>>> Do you need it during  rm -rf  ?
> >>>>
> >>> No, but I wonder if changing the timer from LAPIC to HPET or possibly
> >>> one of the other timers makes the system more responsive under that
> >>> load. Would you mind testing that?
> >>>
> >>> You can switch the timer like this:
> >>>
> >>> sysctl kern.eventtimer.timer=HPET
> >>>
> >>> And then run some of your I/O tests
> >>>
> >> I see. I will test at night, when load goes down.
> >> I cannot say sure that's a right  way to dig, but i will test anything :)
> >>
> >> Just to remind: untar overloads the system, but untar + sync every 120s
> >> does not.
> >> That seems very strange to me.  I think the problem might be somewhere
> >> here.
> >>
> > I just heard from mav that there was a bottleneck in gmirror/graid with
> > regards to BIO_DELETE requests
> >
> > https://svnweb.freebsd.org/base?view=revision&revision=280757
> >
> 
> I applied this patch manually and rebuilt the kernel.
> Hit this bug
> https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=195458
> on reboot, wasted 1 hour fsck-ing 2 times (was dirty after first fsck)
> and after boot tried doing
> rm -rf test1
> I coult not test anything, because it complete after 1 minute, instead 
> 15 minutes before.
> I copier the dir 4 times into subdirs and rm -rf full tree (4x larger) - 
> fast and smooth,
> mariadb did not tonice this, server were working fine.
> 
> However, i also noticed another thing:
> cp -Rp test test1
> also work a lot faster now, probably 3-5 times faster
> Maybe it is because fs is free of tons BIO_DELETE from other processes
> 
> 
> Then i did the untar test at maximum speed ( no pv to limit bandwidth):
> i see that mysql request became slower, but mysql sql request queue 
> built up slower now.
> However, when it reached 70 i stopped untar and mariadb could not 
> recover from condition
> until i executed sync. However, this time sync took only a second.
> I see big improvement, but i still don't understand why i need to issue 
> sync manually to push
> everything to recover from overload.
> 
> # man 2 sync
> a sync() system call is issued frequently by the user process syncer(4) 
> (about every 30 seconds).
> 
> it does not seem to be true
> 
> I checked syncer sysctl
> 
> # sysctl kern.filedelay
> kern.filedelay: 30
> # sysctl kern.dirdelay
> kern.dirdelay: 29
> # sysctl kern.metadelay
> kern.metadelay: 28
> 
> # ps ax | grep sync
> 23  -  DL     0:03.82 [syncer]
> 
> no clue why need manual sync
> 
> By the way: is there way to make sure  that SU+J is really working? 
> Maybe it is disabled for some reason
> and i don't know it. tunefs just shows stored setting, but, for example, 
> with dirty fs, journaling is not
> working in reality. Any way to get current status of SU journaling?
> 
> off topic: suggestion to move to ZFA was not so good, i see a "All 
> available memory used when deleting files from ZFS"
> topic. I'd rather have slow server when i can login and fix than halted 
> on panic. Just to point that ZFS still have plenty
> of unpredictable issues.
> 

This information is very good. Perhaps there is some more additional
tweaking that could be done. I will cc mav@ on this.


More information about the freebsd-fs mailing list