Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Jul 2012 18:56:00 +0100
From:      "Clayton Milos" <clay@milos.co.za>
To:        <freebsd-stable@freebsd.org>
Subject:   GELI Only running at the speed of 1 thread
Message-ID:  <032101cd6e7c$a6f5a950$f4e0fbf0$@milos.co.za>

next in thread | raw e-mail | index | archive | help
Hi Pawel / All

I have a system with 2 AMD Opteron 285's in it with the second cores
disabled so effectively a 2 CPU single core each setup.
I run the following:
#> kldload geom_zero
#> geli onetime -s 4096 /dev/gzero
#> dd if=/dev/gzero of=/dev/null bs=1m count=1k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 0.507832 secs (2114364037 bytes/sec)
#> dd if=/dev/gzero.eli of=/dev/null bs=1m count=1k
1024+0 records in
1024+0 records out
1073741824 bytes transferred in 15.919784 secs (67447009 bytes/sec)

67 MByte/sec is about right for the CPU. Problem is that if I run 2 of those
processes simultaneously then they both get over 60MB/s each. This looks to
me like the geli process isn't threading correctly.
Systat looks like this so you can see there are 2 processes but each is only
using about half of each CPU:
                    /0   /1   /2   /3   /4   /5   /6   /7   /8   /9   /10
     Load Average   |||||

                    /0%  /10  /20  /30  /40  /50  /60  /70  /80  /90  /100
root           idle XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
root     g_eli[0] g XXXXXXXXXXXXXXXXXXXXXXXXXXX
root           idle XXXXXXXXXXXXXXXXXXXXXXX  
root     g_eli[1] g XXXXXXXXXXXXXXXXXXXXXXX
root           geom X

Top is also showing that only half of the CPU power is being used:
last pid:  3081;  load averages:  1.36,  0.69,  0.40
up 0+00:14:13  18:45:15
53 processes:  1 running, 51 sleeping, 1 zombie
CPU:  0.2% user,  0.0% nice, 49.6% system,  0.4% interrupt, 49.8% idle
Mem: 819M Active, 91M Inact, 759M Wired, 2208K Cache, 635M Buf, 14G Free
Swap: 16G Total, 16G Free

With the tunables I've only changed the cache limit because I have the ram
for it and I want to use it for an 8 TB array.
#> sysctl kern.geom.eli
kern.geom.eli.batch: 0
kern.geom.eli.threads: 0
kern.geom.eli.overwrites: 5
kern.geom.eli.visible_passphrase: 0
kern.geom.eli.tries: 3
kern.geom.eli.debug: 0
kern.geom.eli.version: 6
kern.geom.eli.key_cache_misses: 0
kern.geom.eli.key_cache_hits: 4725333
kern.geom.eli.key_cache_limit: 32768

My /boot/loader.conf is:
ng_bpf_load="YES"
amdtemp_load="YES"
ubsec_load="YES"
vm.kmem_size="1024M"
vm.kmem_size_max="1024M"
vfs.zfs.arc_max="600M"
vfs.zfs.vdev.cache.size="8M"
vfs.zfs.txg.timeout="5"
kern.maxvnodes="250000"
kern.geom.eli.key_cache_limit="32768"
hint.lapic.1.disabled="1"
hint.lapic.2.disabled="1"

I have the ubsec in there because I have a BCM5823 Crypto Accelerator
installed. It does not support AES and is not used by GELI:
Kernel: GEOM_ELI: Device gzero.eli created.
kernel: GEOM_ELI: Encryption: AES-XTS 128
kernel: GEOM_ELI:     Crypto: software

Any advice would be greatly appreciated. As I said it looks like GELI isn't
threading properly. Is it because of a setting I am running?

//Clay





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?032101cd6e7c$a6f5a950$f4e0fbf0$>