priocscan vs fcfs
Hi, I've never been really happy with my NetBSD RAIDframe NAS, never really got the speed I was supposed to even with the right alignment / raid layout etc. Today I dug into `dkctl(8)' while searching if cache was enabled for read and write, and I came across the "strategy" command. Long story short, changing from priocscan to fcfs strategy multiplied my NAS's write speed by 6! I changed the strategy for all disk members: # dkctl wd0 strategy fcfs # dkctl wd1 strategy fcfs # dkctl wd2 strategy fcfs and also for the RAIDframe: # dkctl raid0 strategy fcfs /dev/rraid0d: priocscan -> fcfs as changing it only for the disk members was apparently counter-productive. And there we go, from a 40/50MB/s write average to a stunning 200 to 300MB/s, which is more like what the disks can theroically do. Could anyone with some background on these strategies explain what's behind the curtain? I couldn't really find precise documentation on this matter... Thanks, Emile `iMil' Heitor *_ | http://imil.net| ASCII ribbon campaign ( ) | http://www.NetBSD.org | - against HTML email X | http://gcu.info| & vCards / \
Re: priocscan vs fcfs
i...@home.imil.net ("Emile `iMil' Heitor") writes: >as changing it only for the disk members was apparently counter-productive. >And there we go, from a 40/50MB/s write average to a stunning 200 to 300MB/s, >which is more like what the disks can theroically do. >Could anyone with some background on these strategies explain what's behind the >curtain? I couldn't really find precise documentation on this matter... disksort - execute requests in order of increasing block numbers, then continue with the lowest block number. I.e. do a one-way scan over the disk. fcfs - execute requests in the order they were issued. priocscan - The filesystem tags each I/O request (buffer) with a priority. Priorities are mapped to multiple queues, the highest priority queue is executed first, each queue is executed in block number order up to a fixed number of requests (burst) to prevent the lower priority queues from starving. "block number order" can be just "cylinder number order" depending on the disk driver. buffer priority is time-noncritical (low), time-limited (medium) and time-critical (high). Usually synchronous operations and the journal are time-critical, everything else is time-limited and time-noncritical isn't used. Accessing the raw device is also time-critical. So, disksort is the traditional method for filesystems on dumb disk devices. fcfs can be good for smart disks with caches and their own queuing and for streaming a raw disk. Priocscan tries to optimize for concurrent filesystem accesses better than disksort. fcfs is also the "neutral" queue for drivers stacking on top of each other. The queue sorting should really only be done at one level. But raidframe is more complicated because it does its own queuing and sorting outside of this schema, in particular when it has to read-modify-write stripe sets for small I/O. That's probably why setting the queues all to fcfs is the best for you. -- -- Michael van Elst Internet: mlel...@serpens.de "A potential Snark may lurk in every tree."
Re: priocscan vs fcfs
On Wed, 2 Dec 2015, Michael van Elst wrote: fcfs is also the "neutral" queue for drivers stacking on top of each other. The queue sorting should really only be done at one level. But raidframe is more complicated because it does its own queuing and sorting outside of this schema, in particular when it has to read-modify-write stripe sets for small I/O. That's probably why setting the queues all to fcfs is the best for you. Thanks a lot for this clear analysis Michael. I can now confirm the results I've witnessed earlier, I've ran a couple of benchmarks, including bonnie++ and iozone, the latter shows a ratio of x5 in favor of the fsfc strategy for every type of operation. For those interested, iozone spreadsheet output is available here (OOo / LibreOffice): https://home.imil.net/tmp/coruscant-iozone-priocscan.ods https://home.imil.net/tmp/coruscant-iozone-fsfc.ods For each subset, first column is the amount of data written (from 64K to 4M) and first row is the block size. Emile `iMil' Heitor *_ | http://imil.net| ASCII ribbon campaign ( ) | http://www.NetBSD.org | - against HTML email X | http://gcu.info| & vCards / \
Re: Invalid signature in GRUB
Hi, Mitt! I don't get an error like "menuentry: command not found". My update-grub finishes with "erledigt", which means "done", and all the OS's were found. I use this 40_custom file: - #!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. # # Alpeis Linux menuentry "AlpEis Linux on 'sdd3'" { insmod ext2 insmod part_msdos insmod gzio set root=(hd3,msdos1) linux /vmlinuz-grsec root=/dev/sdd3 modules=sd-mod,usb-storage,ext4 quiet initrd /initramfs-grsec } # # NetBSD 7.0 on /dev/sdb8 (wd1a) menuentry "NetBSD 7.0 on /dev/sdb8 (wd1a)" { insmod ufs2 set root=(hd1,msdos8) knetbsd /netbsd --root=wd1a } - Did you delete the first 2 lines. My /boot/grub/grub.cfg contains both of the menuentries (within the ### BEGIN|END /etc/grub.d/40_custom ### block) and the "Alpeis Linux" and "NetBSD 7.0..." options appear in the grub menu at boot I use grub2 2.02 beta2-22 on debian 8.2, kernel 3.16.0-4.586 Regards / Hilmar. Maybe you or someone else can tell me the reason for this "cat << EOF ... EOF" frame around the menuentry block. When I was trying to run "update-grub" without this frame it told me "menuetry: command not found" and "insmod: command not found". Mitt
Re: Dbus issues
I've found a dbus script in LFS book, trimmed it a bit, now I am able to startx. But trying to shutdown or reboot from GNOME only freezes X, logout option is fine. There is no .serverauth, "waiting for X server to shut down gnome-settings-daemon: Fatal IO error 35 (resource temporarily unavailable) on X server :0", gnome-settings-daemon is installed, I believe I am still missing something since I was installing GNOME as package by package. When logged in as a regular user, there is no restart/shutdown option at all. Mitt
Dbus issues
Good day everyone, I'm troubling starting X on a newly installed system. Errors are: - Could not connect to ConsoleKit, no /var/run/dbus/system_bus_socket file; - dbus_g_connection_get_connection: assertion "gconnection" failed; - arguments to dbus_connection_send_with_reply_and_block() were incorrect, assertion "connection! = NULL" failed in file dbus-connection.o line 3543. I guess it is the same error. I searched but found such errors mostly on Arch Linux, and one in OpenBSD on daemonforums. From there I put some stuff inside .dbus/session.conf (allow own, allow user) and a long dbus command inside .xinitrc (regarding dbus-launch), but that doesn't help. I don't have dbus in rc.d. Reinstalling dbus also doesn't help. System - NetBSD 7.0. I am trying to get GNOME2 working. Thanks, Mitt
pkgsrc asterisk 1.8 problem
pkg_create: can't stat `/usr/pkgsrc/comms/asterisk18/work/.destdir/usr/pkg/lib/asterisk/modules/func_curl.so' pkg_create: can't stat `/usr/pkgsrc/comms/asterisk18/work/.destdir/usr/pkg/lib/asterisk/modules/res_config_curl.so' pkg_create: can't stat `/usr/pkgsrc/comms/asterisk18/work/.destdir/usr/pkg/lib/asterisk/modules/res_curl.so' Some people can me help ?
Re: Invalid signature in GRUB
Hi, Thank you, now it boots. :-) Maybe you or someone else can tell me the reason for this "cat << EOF ... EOF" frame around the menuentry block. In my "40_custom" it works without it, as expected. Regards. / Hilmar. Here's what's inside my /etc/grub.d/40_custom now: -- #!/bin/sh -e cat << EOF menuentry "NetBSD 7.0" { insmod ufs2 set root=(hd0,msdos2) knetbsd /netbsd --root=wd0a } EOF -- Mitt