Andrew Geissler | 6972109 | 2021-07-23 12:57:00 -0400 | [diff] [blame] | 1 | From c1ebf893e32a0a77e820484d48a903523fef7c1b Mon Sep 17 00:00:00 2001 |
| 2 | From: Vasily Tarasov <tarasov@vasily.name> |
| 3 | Date: Fri, 10 Jun 2016 14:33:48 -0400 |
| 4 | Subject: [PATCH] Adding volatile modifier to tmp variable in memory test |
| 5 | |
| 6 | Issue explanation: |
| 7 | |
| 8 | ./sysbench/sysbench --test=memory --num-threads=16 \ |
| 9 | --memory-block-size=268435456 \ |
| 10 | --memory-total-size=137438953472 \ |
| 11 | --memory-oper=read \ |
| 12 | --memory-access-mode=seq \ |
| 13 | --memory-scope=local run |
| 14 | |
| 15 | Without this commit the time to run the above command is 0.0004 seconds. |
| 16 | With this commit the time is greater than 3 seconds. Essentially, |
| 17 | without the volatile modifier, the compiler optimizes read access so |
| 18 | that no real access happens. |
| 19 | |
| 20 | Upstream-Status: Backport [part of v1.0.0 https://github.com/akopytov/sysbench/commit/8753cb93be4c0b81a20b704ced91e7a422da52b1] |
| 21 | |
| 22 | (cherry picked from commit 8753cb93be4c0b81a20b704ced91e7a422da52b1) |
| 23 | Signed-off-by: massimo toscanelli <massimo.toscanelli@leica-geosystems.com> |
| 24 | --- |
| 25 | sysbench/tests/memory/sb_memory.c | 2 +- |
| 26 | 1 file changed, 1 insertion(+), 1 deletion(-) |
| 27 | |
| 28 | diff --git a/sysbench/tests/memory/sb_memory.c b/sysbench/tests/memory/sb_memory.c |
| 29 | index 2e8998f..7d22bb9 100644 |
| 30 | --- a/sysbench/tests/memory/sb_memory.c |
| 31 | +++ b/sysbench/tests/memory/sb_memory.c |
| 32 | @@ -244,7 +244,7 @@ sb_request_t memory_get_request(int tid) |
| 33 | int memory_execute_request(sb_request_t *sb_req, int thread_id) |
| 34 | { |
| 35 | sb_mem_request_t *mem_req = &sb_req->u.mem_request; |
| 36 | - int tmp = 0; |
| 37 | + volatile int tmp = 0; |
| 38 | int idx; |
| 39 | int *buf, *end; |
| 40 | log_msg_t msg; |