Hi, We found a severe performance degradation when Hyperthreading is on and thread_concurrency=20.
We are using OSDL DBT-1 as the benchmark and got about 200 to 250 BT (bogotransactions per second) HT is OFF normal case but 30 to 50 BT on HT is ON. innodb_thread_concurrency=20 So we did profile (using oprofile tool) and got the following profiling data. My impression is that mutex_spin_wait (and ut_delay) is something wrong if HT is ON. (Spin-wait loop is too expensive if it is hyperthreading.) I added the following code but it does not help it. $ diff -pu ut0ut.c.orig ut0ut.c --- ut0ut.c.orig 2005-10-17 10:27:43.000000000 +0900 +++ ut0ut.c 2006-02-28 11:59:16.777840496 +0900 @@ -290,6 +290,13 @@ ut_delay( j = 0; for (i = 0; i < delay * 50; i++) { + /* When executing a spin-wait loop on the Hyper-Threading + processor, the processor can suffer a severe performance + penalty. The pause instruction provides a hint to the + processor. Please refer IA-32 Intel Architecture + Software Developers Manual, Vol 3. */ + __asm__ __volatile__( + "pause; \n"); j += i; } What do you think? Is there any hints? HT is OFF CPU: P4 / Xeon, speed 2793.26 MHz (estimated) Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000 samples % image name app name symbol name 13159082 8.8445 libc-2.3.4.so libc-2.3.4.so memcpy 12565549 8.4456 libpthread-2.3.4.so libpthread-2.3.4.so pthread_mutex_trylock 11387363 7.6537 mysqld mysqld rec_get_offsets_func 9631916 6.4738 libpthread-2.3.4.so libpthread-2.3.4.so pthread_mutex_unlock 8794484 5.9110 mysqld mysqld btr_search_guess_on_hash 4949248 3.3265 mysqld mysqld row_search_for_mysql 4022481 2.7036 mysqld mysqld ut_delay 3754265 2.5233 mysqld mysqld cmp_dtuple_rec_with_match 2535190 1.7040 mysqld mysqld row_sel_store_mysql_rec 2520957 1.6944 mysqld mysqld btr_cur_search_to_nth_level HT is ON CPU: P4 / Xeon with 2 hyper-threads, speed 2793.26 MHz (estimated) Counted GLOBAL_POWER_EVENTS events (time during which processor is not stopped) with a unit mask of 0x01 (mandatory) count 100000 samples % image name app name symbol name 53221317 21.4225 libpthread-2.3.4.so libpthread-2.3.4.so pthread_mutex_lock 25743323 10.3621 mysqld mysqld ut_delay 12345146 4.9691 vmlinux vmlinux do_futex 12066038 4.8568 mysqld mysqld mutex_spin_wait 10395391 4.1843 vmlinux vmlinux LKST_ETYPE_PROCESS_SCHED_ENTER_HEADER_hook 9247281 3.7222 libpthread-2.3.4.so libpthread-2.3.4.so pthread_mutex_unlock 7407229 2.9815 vmlinux vmlinux futex_requeue 5921454 2.3835 libpthread-2.3.4.so libpthread-2.3.4.so pthread_mutex_trylock 5484279 2.2075 vmlinux vmlinux LKST_ETYPE_PROCESS_WAKEUP_HEADER_hook 4846067 1.9506 vmlinux vmlinux __switch_to Regards, Hiro -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]