Hello all, I am testing handlersockets performance in a 5.5.28-29.1-log (Percona) server. These are the enabled options:
loose_handlersocket_port = 9998 loose_handlersocket_port_wr = 9999 loose_handlersocket_threads = 48 loose_handlersocket_threads_wr = 1 innodb_spin_wait_delay=0 The machine has 24 (Xeon - 2.00GHz) cores and 64GB RAM. We are using bonding to make sure the ethernets aren't limiting us here (we get around 90Mbps) We are able to handler around 500K requests per second using handler socket plugin. Even though it looks pretty impressive number, it's still not close to the 750K ones Yoshinori is able to get ( http://yoshinorimatsunobu.blogspot.com.es/2010/10/using-mysql-as-nosql-story-for.html ) The machine is acting a normal slave in a cluster - receiving normal traffic from our site (we do this on purpose to see how many requests we can handle in a normal workload environment) Obviously we're not expecting to get similar numbers as our tests aren't the same. However, doing a bit of profiling to try to determine what's the bottleneck here we've seen this: CPU: Intel Architectural Perfmon, speed 2000.26 MHz (estimated) Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 100000 samples % image name symbol name *2163868 24.2065 mysqld mutex_delay* 694540 7.7696 mysqld build_template(row_prebuilt_struct*, THD*, TABLE*, unsigned int) 626405 7.0074 mysqld buf_page_get_gen 607664 6.7978 mysqld rec_get_offsets_func 480937 5.3801 mysqld cmp_dtuple_rec_with_match 412081 4.6098 mysqld btr_cur_search_to_nth_level 365402 4.0876 mysqld rec_init_offsets 356064 3.9832 mysqld page_cur_search_with_match 310819 3.4770 mysqld row_search_for_mysql 274248 3.0679 mysqld row_sel_store_mysql_rec 208466 2.3320 mysqld my_pthread_fastmutex_lock 185853 2.0791 mysqld ha_innobase::index_read(unsigned char*, unsigned char const*, unsigned int, ha_rkey_function) 182939 2.0465 mysqld pfs_mutex_enter_func 154369 1.7269 mysqld mtr_memo_slot_release 138558 1.5500 mysqld page_check_dir 131622 1.4724 mysqld dict_index_copy_types 101162 1.1317 mysqld srv_conc_force_exit_innodb 72754 0.8139 mysqld ha_innobase::change_active_index(unsigned int) 65191 0.7293 mysqld my_long10_to_str_8bit 62574 0.7000 mysqld btr_pcur_store_position 61900 0.6925 mysqld pfs_mutex_exit_func 51889 0.5805 mysqld Field_long::pack_length() const 49073 0.5490 mysqld srv_conc_enter_innodb 44079 0.4931 mysqld ha_innobase::init_table_handle_for_HANDLER() 38998 0.4363 mysqld Field_tiny::pack_length() const 38868 0.4348 mysqld rec_copy_prefix_to_buf 36292 0.4060 mysqld ha_innobase::innobase_get_index(unsigned int) That mutex_delay is eating quite a big % of the time. I have not been able to find what is that related to. Does anyone has a clue about what's it and if there's a way to improve and overcome it? Cheers Manuel.