Details
-
Type:
Task
-
Status: Stalled
-
Priority:
Major
-
Resolution: Unresolved
-
Fix Version/s: 10.0
-
Component/s: None
-
Labels:None
Description
The following patch is suggested by Stewart Smith:
memory barrier at end of setting up innodb aio
we need a memory barrier here as otherwise when IO threads start they
can get a stale view of the data structure.
It turns out that POWER8 is fast enough with large enough caches that
this can actually be a problem.
You can reproduce this by attempting to do a lot of writes shortly after
server startup - you'll hit a really odd assert.
Index: mysql-5.6.17/storage/innobase/os/os0file.cc
===================================================================
--- mysql-5.6.17.orig/storage/innobase/os/os0file.cc
+++ mysql-5.6.17/storage/innobase/os/os0file.cc
@@ -3782,7 +3782,7 @@ skip_native_aio:
slot->ret = 0;
#endif /* WIN_ASYNC_IO */
}
-
+ __sync_synchronize();
return(array);
}
Gliffy Diagrams
Attachments
Issue Links
- is part of
-
MDEV-6530 Examine and apply Power8 patches suggested by Stewart Smith
-
- Open
-
- links to
Activity
- All
- Comments
- Work Log
- History
- Activity
- Transitions
Quoting Stewart:
This patch adds __sync_synchronize() to
innobase_init()/innobase_start_or_create_for_mysql()/os_aio_init()/os_aio_array_create()
But I/O threads are created later in
innobase_init()/innobase_start_or_create_for_mysql()
And pthread_create() is supposed to synchronize memory anyway:
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_11