Problem running ACT on GCE using local SSD disk (CE 3.4.0) [Released] [Resolved]

Hello, I’m try to benchmark local SSD disks at GCE (google compute engine - see About local SSDs  |  Compute Engine Documentation  |  Google Cloud ). I can initialize SSD disk with actprep successully but when I try to run act itself it produces errors. Or better say same error again and again.

The output looks like:

Aerospike act version 2.0 - device IO test
Copyright 2011 by Aerospike. All rights reserved.

CIO CONFIGURATION
device-names: /dev/sdb
num-devices: 1
queue-per-device: no
num-queues: 8
threads-per-queue: 8
test-duration-sec: 86400
report-interval-sec: 1
microsecond-histograms: no
read-reqs-per-sec: 6000
large-block-ops-per-sec: 71
read-req-num-512-blocks: 3
large-block-op-kbytes: 128
use-valloc: no
num-write-buffers: 256
scheduler-mode: noop

/dev/sdb size = 402653184000 bytes, 786432000 512-byte blocks, 3072000 large blocks

ERROR: seek & read
ERROR: seek & read
ERROR: seek & read
ERROR: seek & read
ERROR: seek & read
...

My config is this:

########## 
act config file for testing 1 device at 3x load 
########## 

# comma-separated list 
device-names: /dev/sdb 

# yes|no - default is no: 
queue-per-device: no 

# mandatory non-zero, ignored if queue-per-device is yes: 
num-queues: 8 

# mandatory non-zero:
threads-per-queue: 8 

test-duration-sec:  86400 
report-interval-sec:  1 
read-reqs-per-sec: 6000 
large-block-ops-per-sec: 71 
read-req-num-512-blocks: 3 
large-block-op-kbytes: 128 

# yes|no - default is no:
use-valloc: no 

# if 0, will write all zeros every time:
num-write-buffers: 256 

# noop|cfq - default is noop 
scheduler-mode: noop 

I cannot tell whenever it is a problem with SSD disks at google or with benchmark tool itself. GCE supports two methods to attach SSD disk - via SCSI interface and via NVMe interface and for both I had the same problem.

hi Ilyam,

Yes, we are aware of the problem. The reason being the use of O_DIRECT in the ACT code. Looks like GCE does not honor O_DIRECT. You can remove O_DIRECT from the ACT code (act.c) and then recompile.

It should work fine after that. Let me know if you face problems even after removing O_DIRECT.

We will fix it in the main ACT code soon.

Recompiling without O_DIRECT helps. Thanks.

Removing this flag may impact (potentially significantly) the performance though.

The OS you are running on may require a different value for this flag that would potentially then help performance.

As far as I can tell the numbers look good enough even without this flag. At least with 3x load they are quite similar to what I’ve seen on EC2 with instances of storage type.

But the problem is that Aerospike itself also doesn’t seem to work: Aerospike doesn't work with local SSD disks at GCE

Looks like this issue you mentioned was resolved in Server Release 3.4.0.

1 Like