Hi,all

I did some test  about MySQL's Insert performance  on ZFS,  and met a big
performance problem,*i'm not sure what's the point*.

Environment
2 Intel X5560 (8 core), 12GB RAM, 7 slc SSD(Intel).

A Java client run 8 threads concurrency insert into one Innodb table:

*~600 qps when sync_binlog=1 & innodb_flush_log_at_trx_commit=1
~600 qps when sync_binlog=10 & innodb_flush_log_at_trx_commit=1
~600 qps when sync_binlog=0 & innodb_flush_log_at_trx_commit=1

~900 qps when sync_binlog=1 & innodb_flush_log_at_trx_commit=0*
~5500 qps when sync_binlog=10 & innodb_flush_log_at_trx_commit=0
~15000 qps when sync_binlog=0 & innodb_flush_log_at_trx_commit=0

*~800 qps when sync_binlog=1 & innodb_flush_log_at_trx_commit=2*
~4500 qps when sync_binlog=10 & innodb_flush_log_at_trx_commit=2
~13000 qps when sync_binlog=0 & innodb_flush_log_at_trx_commit=2

When sync_binlog=1 & innodb_flush_log_at_trx_commit=1, qps is too...
And i collect some stats data when qps < 1000:

[r...@ssd /data/mysqldata3]#truss -c -p 13968
^C
syscall               seconds   calls  errors
read                     .649   90816   30265
write                    .770   57157
open                     .000       4
close                    .000       4
time                     .368   83358
lseek                    .000      66
*fdsync                  2.250   80699*
fcntl                    .268   60530
lwp_park                 .210   28842
lwp_unpark               .198   28842
yield                    .000      47
pread                    .025     250
pwrite                   .857   53880
pollsys                  .005     603
                     --------  ------   ----
sys totals:             5.605  485098  30265
usr time:               5.519
elapsed:               61.520

ps:13968 is mysqld process's pid

[r...@ssd /data/mysqldata3]#vmstat 1
kthr      memory            page            disk          faults      cpu
r b w   swap  free  re  mf pi po fr de sr s1 s2 s3 s5   in   sy   cs us sy
id
0 0 0 575836 1388816 1  18  0  0  0  0  1  3 17 17 17 1226 4185 2008  1  0
99
0 0 0 211652 5620432 21 99  0  0  0  0  0  0 461 470 473 4207 8834 16311 1 1
99
0 0 0 211496 5620260 0  26  0  0  0  0  0  0 469 468 467 4168 8789 16328 1 1
99
0 0 0 211496 5620164 0  28  0  0  0  0  0  0 504 504 505 4471 9443 17606 1 1
98
0 0 0 211496 5620100 0  20  0  0  0  0  0  0 504 505 505 4527 9525 17618 1 1
99
0 0 0 211496 5620004 0  20  0  0  0  0  0  0 507 506 505 4491 9494 17630 1 1
98
0 0 0 211496 5619940 0  12  0  0  0  0  0  0 507 508 509 4512 9497 17743 1 1
98
0 0 0 211496 5619876 0  24  0  0  0  0  0  0 504 502 503 4370 9486 17650 1 1
98
0 0 0 211488 5619804 0  12  0  0  0  0  0  0 508 509 508 4341 9636 17853 0 1
99
^C
[r...@ssd /data/mysqldata3]#zpool iostat data 1
               capacity     operations    bandwidth
pool         used  avail   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
data         141G  37.9G      4     51   144K  3.15M
data         141G  37.9G      1  1.50K  11.9K  6.06M
data         141G  37.9G      0  1.37K      0  5.48M
data         141G  37.9G      0  1.49K      0  5.98M
data         141G  37.9G    214  1.45K  5.22M  7.27M
data         141G  37.9G      0  1.37K      0  5.48M
data         141G  37.9G      0  1.39K      0  5.58M
data         141G  37.9G      0  1.48K      0  5.92M
data         141G  37.9G     51  1.50K  1.98M  6.06M
data         141G  37.9G      0  2.09K      0  23.7M
data         141G  37.9G      0  1.38K      0  5.52M
data         141G  37.9G      0  1.37K  7.92K  6.09M


ZFS Conf detail:
[r...@ssd /]#zpool status
  pool: data
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        data        ONLINE       0     0     0
          c0t4d0    ONLINE       0     0     0
          c0t5d0    ONLINE       0     0     0
          c0t7d0    ONLINE       0     0     0
          c0t8d0    ONLINE       0     0     0
          c0t9d0    ONLINE       0     0     0
          c0t10d0   ONLINE       0     0     0

errors: No known data errors

  pool: rpool
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       ONLINE       0     0     0
          c0t3d0s0  ONLINE       0     0     0

errors: No known data errors


[r...@ssd /]#zfs get all data/mysqldata3
NAME             PROPERTY         VALUE                  SOURCE
data/mysqldata3  type             filesystem             -
data/mysqldata3  creation         Thu Mar 19  9:47 2009  -
data/mysqldata3  used             12.4G                  -
data/mysqldata3  available        83.0G                  -
data/mysqldata3  referenced       12.4G                  -
data/mysqldata3  compressratio    1.00x                  -
data/mysqldata3  mounted          yes                    -
data/mysqldata3  quota            none                   default
data/mysqldata3  reservation      none                   default
data/mysqldata3  recordsize       8K                     local
data/mysqldata3  mountpoint       /data/mysqldata3       default
data/mysqldata3  sharenfs         off                    default
data/mysqldata3  checksum         on                     default
data/mysqldata3  compression      off                    default
data/mysqldata3  atime            on                     default
data/mysqldata3  devices          on                     default
data/mysqldata3  exec             on                     default
data/mysqldata3  setuid           on                     default
data/mysqldata3  readonly         off                    default
data/mysqldata3  zoned            off                    default
data/mysqldata3  snapdir          hidden                 default
data/mysqldata3  aclmode          groupmask              default
data/mysqldata3  aclinherit       restricted             default
data/mysqldata3  canmount         on                     default
data/mysqldata3  shareiscsi       off                    default
data/mysqldata3  xattr            on                     default
data/mysqldata3  copies           1                      default
data/mysqldata3  version          3                      -
data/mysqldata3  utf8only         off                    -
data/mysqldata3  normalization    none                   -
data/mysqldata3  casesensitivity  sensitive              -
data/mysqldata3  vscan            off                    default
data/mysqldata3  nbmand           off                    default
data/mysqldata3  sharesmb         off                    default
data/mysqldata3  refquota         none                   default
data/mysqldata3  refreservation   none                   default

MySQL Conf Detail:
...
[mysqld3]
lower_case_table_names=1
user=mysql
port = 3308
socket = /usr/local/mysql/sock/mysql3.sock
pid-file=/usr/local/mysql/sock/mysql3.pid
datadir=/data/mysqldata3/mydata
tmpdir =/data/mysqldata3/tmpdir
skip-locking
skip-name-resolve
back_log=100
interactive_timeout=172800

default-storage-engine = INNODB
default-character-set = utf8

max_connections = 500
max_connect_errors=100000
max_allowed_packet = 4M
max_heap_table_size = 1024M
max_length_for_sort_data = 4096


net_buffer_length = 8K
sort_buffer_size = 8M
join_buffer_size = 16M

#if lock memory
#memlock

table_cache = 1024
thread_cache_size = 512
thread_concurrency = 8
query_cache_type=0

#memory table max size
tmp_table_size = 128M


#*******************************  Logs related settings
***************************
log-error=/usr/local/mysql/log/error3.log
long_query_time = 1
log_long_format
slow_query_log=/usr/local/mysql/log/slow-query3.log
binlog_cache_size = 2M
max_binlog_size = 512M
log-bin=/data/mysqldata3/binlog/mysql-bin
sync_binlog=1
#log warnings
log_warnings

#*******************************  Replication related settings
**********************
#master
server-id = 3

binlog_format=mixed

#******************************* MyISAM Specific options
****************************
key_buffer_size = 32M
read_buffer_size = 8M
read_rnd_buffer_size = 2M
bulk_insert_buffer_size = 16M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 10G
myisam_max_extra_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover

# ***************************** INNODB Specific options
****************************
innodb_file_per_table
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 2048M
innodb_data_home_dir = /data/mysqldata3/innodb_ts
innodb_data_file_path = ibdata1:256M:autoextend
innodb_file_io_threads = 4
innodb_thread_concurrency = 0
innodb_flush_log_at_trx_commit = 1
innodb_log_buffer_size = 8M
innodb_log_file_size = 512M
innodb_log_files_in_group = 5
innodb_log_group_home_dir = /data/mysqldata3/innodb_log
innodb_max_dirty_pages_pct = 20
innodb_lock_wait_timeout = 120
innodb_doublewrite=0
...

Is there any one can help me, why fsync on zfs is so bad? or other problem?


-- 
Sky.Jian   iMySQLer
个人站点:http://www.jianzhaoyang.com
BBS交流:http://iMySQLer.com
邮件组:http://groups.google.com/group/mysqler
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to