Date: Thu, 9 Jun 2016 17:37:54 +0800 From: Gergely Imreh <imrehg@gmail.com> To: FreeBSD ARM <freebsd-arm@freebsd.org> Subject: RPi2 i/o blocking and SD card performance Message-ID: <CAJ3iQcoc5nVSFz3JKMG_Y9Q9k4PFizmp2rf3vfA7nv=u_12nBQ@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
Hi, I've been testing FreeBSD 11.0-CURRENT on a RaspberryPi2. I'm relatively new to FreeBSD, and wondering if there's any advice for improving the performance a bit. First, it looks like there's a lot of i/o blocking behaviour going on. For example running MediaWiki on the board, if I compile any ports, the site itself is pretty much unusable (the PHP scripts time out even with 180s timeouts). The strangest thing is that the CPU usage is not at 100% all the way, can be that all 4 cores are ~99% idle, and still everything goes very slow. Once the ports compilation or any other i/o-related task is finished, it's snappy again. Any idea why it could be to have such big latency/lag even though the CPU is idle? Is there anything I could test? Second, I've also tried profiling the SD card a bit. The very same card (SanDisk 32GB), same RPi board once with a fresh install of FreeBSD and once with a fresh install of ArchLinuxARM, running bonnie++ -s 2000 (the results below) The block write perfomance on ArchLinux is ~55% higher (14M/s vs 9M/s), while rewrite and per char output is 4-5x larger. Block read is also ~70% larger (25M/s vs 15M/s). This is without any tuning. Any idea why the FreeBSD performance on the exact same hardware is so different, and whether it can be improved? I guess these two questions are related. FreeBSD: version 1.97 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP rpi2 2000M 20 99 8924 14 2275 4 39 99 14873 14 33.9 4 Latency 481ms 4407ms 8319ms 244ms 153ms 226s Version 1.97 ------Sequential Create------ --------Random Create-------- rpi2 -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 660 25 10388 100 3483 99 1532 58 10702 99 3531 99 Latency 2769ms 375us 754us 1967ms 253us 512us ArchLinux: Version 1.97 ------Sequential Output------ --Sequential Input- --Random- Concurrency 1 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks-- Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP alarmpi 2000M 102 99 13901 10 8089 7 579 99 25264 8 30.6 1 Latency 115ms 5843ms 6381ms 22745us 54383us 40338ms Version 1.97 ------Sequential Create------ --------Random Create-------- alarmpi -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete-- files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP 16 4460 38 +++++ +++ 6002 34 4137 34 +++++ +++ 7440 43 Latency 1391us 3885us 3757us 1068us 113us 1261us Cheers, Greg
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ3iQcoc5nVSFz3JKMG_Y9Q9k4PFizmp2rf3vfA7nv=u_12nBQ>