ZFS on FreeBSD 11.3 slower than 10.4

Miroslav Lachman 000.fbsd at quip.cz
Sun Jun 7 17:09:27 UTC 2020


On 2020-06-06 00:57, Ronald Klop wrote:
> On Fri, 05 Jun 2020 22:57:15 +0200, Ronald Klop <ronald-lists at klop.ws> 
> wrote:
> 
>> On Sat, 30 May 2020 23:29:48 +0200, Miroslav Lachman 
>> <000.fbsd at quip.cz> wrote:
>>
>>> On 2020-05-30 22:10, Ronald Klop wrote:
>>>> On Sat, 23 May 2020 21:44:03 +0200, Miroslav Lachman 
>>>> <000.fbsd at quip.cz> wrote:
>>>>
>>>>> I upgraded my old desktop computer few month ago from old 10.4 
>>>>> based PC-BSD to stock FreeBSD 11.3. It uses single 2TB HDD 7200rpm.
>>>>> My problem is that upgraded version is really slow and some desktop 
>>>>> applications are very lagging (playing multimedia is interrupted 
>>>>> for a fraction of seconds) when there is heavy filesystem activity.
>>>>>
>>>>> I am using zfsnap2 for taking snapshots periodically and when there 
>>>>> is enough snapshots zfs destroy is called. In this time the user 
>>>>> experience is terrible. Starting new application like browser or 
>>>>> even something much smaller takes minutes. The old version based on 
>>>>> FreeBSD 10.4 behaves much better. I used the old version for years 
>>>>> and never have problems with interrupted multimedia playback.
>>>>>
>>>>> Are there some sysctls to tune to get better desktop interactivity 
>>>>> in heavy filesystem operations like zfs destroy, pkg check or other 
>>>>> "find" periodic scripts?
>>>
>>>
>>>> How full is the disk? ZFS has poor performance if the disk becomes 
>>>> full.
>>>> What is in /etc/sysctl.conf and /boot/loader.conf?
>>>> And did you try to boot 12.1 and did it have the same behavious?
>>>
>>> It is currently 77% full. But it is the same pool with the same 
>>> capacity as with 10.4.
>>>
>>> I didn't try 12.1, I need to stay on 11.3 for now.
>>>
>>> ## loader.conf
>>>
>>> nvidia_load="YES"
>>> drm_load="YES"
>>> drm2_load="YES"
>>> iicbus_load="YES"
>>> vboxdrv_load="YES"
>>> crypto_load="YES"
>>> aesni_load="YES"
>>> geom_eli_load="YES"
>>> vfs.zfs.arc_max="1024M"
>>> zfs_load="YES"
>>> iicbus_load="YES"
>>>
>>> ## sysctl.conf
>>>
>>> kern.coredump=0
>>> kern.maxfiles=49312
>>> vfs.usermount=1
>>> security.jail.allow_raw_sockets=1
>>> security.jail.sysvipc_allowed=1
>>> security.jail.mount_allowed=1
>>> security.jail.chflags_allowed=1
>>> hw.syscons.bell=0
>>> kern.sched.preempt_thresh=224
>>> kern.ipc.shm_allow_removed=1
>>> kern.shutdown.poweroff_delay=500
>>> kern.bootfile=/boot/kernel/kernel
>>> hw.usb.no_shutdown_wait=1
>>> hw.snd.default_unit=3
>>> kern.sched.interact=10
>>> vfs.aio.max_aio_per_proc=256
>>> vfs.aio.max_aio_queue=8192
>>> vfs.aio.max_aio_queue_per_proc=1024
>>> vfs.aio.max_buf_aio=64
>>> net.local.stream.recvspace=65536
>>> net.local.stream.sendspace=65536
>>>
>>>
>>> loader.conf and sysctl.conf are the same for 10.4 and 11.3 but 11.3 
>>> is much much slower when it comes to heavy IO like "find" daily 
>>> periodic scripts, zfs destroy, starting new applications etc.
>>>
>>>
>>> Kind regards
>>> Miroslav Lachman
>>
>>
>> I don't have anything I see which I'm sure will fix things, but you 
>> could try to remove/comment some of these sysctls to see if 11.3 has 
>> better defaults now.
>> kern.sched.preempt_thresh, kern.maxfiles, kern.sched.interact, vfs.aio.*
>>
>> What kind of machine is it? CPU, MEM?
>> What does gstat say about the saturation of the disk?
>>
>> Regards,
>> Ronald.
> 
> 
> What might also be interesting is which timer is selected. Sometimes for 
> some reason another time-source is chosen which can influence a lot of 
> things (like sound).
> Please post the output of "sysctl kern.eventtimer" and "sysctl 
> kern.timecounter" if possible of 10.4 and 11.3.
> 
> Or compare the /var/run/dmesg.boot files of 10.4 and 11.3 to see if some 
> hardware is recognized differently.

sysctls from 11.3 instance

# sysctl kern.eventtimer
kern.eventtimer.periodic: 0
kern.eventtimer.timer: LAPIC
kern.eventtimer.idletick: 0
kern.eventtimer.singlemul: 2
kern.eventtimer.choice: LAPIC(600) HPET(550) HPET1(440) HPET2(440) 
HPET3(440) HPET4(440) i8254(100) RTC(0)
kern.eventtimer.et.i8254.quality: 100
kern.eventtimer.et.i8254.frequency: 1193182
kern.eventtimer.et.i8254.flags: 1
kern.eventtimer.et.RTC.quality: 0
kern.eventtimer.et.RTC.frequency: 32768
kern.eventtimer.et.RTC.flags: 17
kern.eventtimer.et.HPET4.quality: 440
kern.eventtimer.et.HPET4.frequency: 14318180
kern.eventtimer.et.HPET4.flags: 3
kern.eventtimer.et.HPET3.quality: 440
kern.eventtimer.et.HPET3.frequency: 14318180
kern.eventtimer.et.HPET3.flags: 3
kern.eventtimer.et.HPET2.quality: 440
kern.eventtimer.et.HPET2.frequency: 14318180
kern.eventtimer.et.HPET2.flags: 3
kern.eventtimer.et.HPET1.quality: 440
kern.eventtimer.et.HPET1.frequency: 14318180
kern.eventtimer.et.HPET1.flags: 3
kern.eventtimer.et.HPET.quality: 550
kern.eventtimer.et.HPET.frequency: 14318180
kern.eventtimer.et.HPET.flags: 7
kern.eventtimer.et.LAPIC.quality: 600
kern.eventtimer.et.LAPIC.frequency: 3192676730
kern.eventtimer.et.LAPIC.flags: 7


# sysctl kern.timecounter
kern.timecounter.tsc_shift: 1
kern.timecounter.smp_tsc_adjust: 0
kern.timecounter.smp_tsc: 1
kern.timecounter.invariant_tsc: 1
kern.timecounter.fast_gettime: 1
kern.timecounter.tick: 1
kern.timecounter.choice: ACPI-fast(900) i8254(0) HPET(950) TSC-low(1000) 
dummy(-1000000)
kern.timecounter.hardware: TSC-low
kern.timecounter.alloweddeviation: 5
kern.timecounter.stepwarnings: 0
kern.timecounter.tc.ACPI-fast.quality: 900
kern.timecounter.tc.ACPI-fast.frequency: 3579545
kern.timecounter.tc.ACPI-fast.counter: 16156069
kern.timecounter.tc.ACPI-fast.mask: 16777215
kern.timecounter.tc.i8254.quality: 0
kern.timecounter.tc.i8254.frequency: 1193182
kern.timecounter.tc.i8254.counter: 49991
kern.timecounter.tc.i8254.mask: 65535
kern.timecounter.tc.HPET.quality: 950
kern.timecounter.tc.HPET.frequency: 14318180
kern.timecounter.tc.HPET.counter: 3887656701
kern.timecounter.tc.HPET.mask: 4294967295
kern.timecounter.tc.TSC-low.quality: 1000
kern.timecounter.tc.TSC-low.frequency: 1596338365
kern.timecounter.tc.TSC-low.counter: 1764358755
kern.timecounter.tc.TSC-low.mask: 4294967295


CPU: Intel(R) Xeon(R) CPU E3-1225 v3 @ 3.20GHz (3192.68-MHz K8-class  CPU)
real memory  = 13388218368 (12768 MB)
avail memory = 12337872896 (11766 MB)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs


last pid: 15694;  load averages:  0.42,  0.46,  0.38 
                                                      up 0+00:30:40 
19:01:30
138 processes: 1 running, 136 sleeping, 1 zombie
CPU:  3.2% user,  0.0% nice,  0.4% system,  0.5% interrupt, 95.9% idle
Mem: 1531M Active, 977M Inact, 39M Laundry, 3047M Wired, 6251M Free
ARC: 1275M Total, 311M MFU, 286M MRU, 2542K Anon, 23M Header, 652M Other
      124M Compressed, 476M Uncompressed, 3.85:1 Ratio
Swap: 4096M Total, 4096M Free

As you can see there is a lot of free memory.

I will try to catch gstat output next time and also post some info from 
10.4 instance.

Kind regards
Miroslav Lachman



More information about the freebsd-fs mailing list