Is the fsync() fake on FreeBSD6.1?

Julian Elischer julian at elischer.org
Tue Jun 27 22:31:13 UTC 2006


Leo Huang wrote:

> Hi,
>
> I benchmarked MySQL 4.1.18 on FreeBSD 6.1 and Debian 3.1 using Super
> Smack 1.3 some days ago.
>
> The benchmark table is
> CREATE TABLE `Account` (
> `aid` int(11) NOT NULL auto_increment,
> `name` char(20) NOT NULL default '',
> `flag` int(11) NOT NULL default '0',
> `uidcount` int(11) NOT NULL default '0',
> `balance` int(11) NOT NULL default '0',
> `point` int(11) NOT NULL default '0',
> `blocktm` int(11) NOT NULL default '0',
> `ipnum` int(10) unsigned default NULL,
> `newdate` datetime default NULL,
> PRIMARY KEY (`aid`),
> UNIQUE KEY `name` (`name`)
> ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
>
> And it has 1,000,000 rows.
>
> The SQL statement is
> update Account set balance= balance + 1 where aid=?;
>
> The result is followed:
> OS Clients Result(queries per second) TPS(got from iostat)
> FreeBSD6.1 50 516.1 about 2000
> Debian3.1 50 49.8 about 200
>
> The result is surprise me. The MySQL Performance on FreeBSD6.1 is
> about 10 times of on Debian3.1,and the output of iostat also shows it.
>
> I know that MySQL uses fsync() to flush both the data and log files at
> default when using innodb
> engine(http://dev.mysql.com/doc/refman/4.1/en/innodb-parameters.html).
> Our evaluating computer only has a 10000RPM SCSI hard disk. I think it
> can do about 200 sequential fsync() calls per second if the fsync() is
> real.
>
> Is the fsync() on FreeBSD6.1 fake? I mean than the data is only
> written to the drives memory and so can be lost if power goes down.
> And how I can confirm this?
>
> If the fsync() is fake, how can I get the real fsync?


fsync is certainly not fake.

is there any chance that the log file or any other part of your 
infrastructure is
not on real disk? e.g. a memory filesystem for /tmp?

The disk layout may allow the disks to lie to the OS in some situations.
(the disks may be set to cache writes.. there are utilities to check 
this sort of thing,
e.g. camcontrol)

You say that iostat gives you "the same info" what does that actually 
mean/show?



>
> Any comment is welcome!
>
> PS:
> 1. Our evaluating computer is DELL PowerEdge 1650。Its hardware
> configuration is followed:
> CPU: 2 * Intel Pentium III 1.33GHz 512KB Level 2 Cache(smp)
> Memory: 1024MB ECC SDRAM
> HD: SEAGATE ST336706LC(36GB Ultra160 SCSI 10000RPM)
> NIC : Intel(R) PRO/1000 Network Connection
>
> 2. Some important parameters in MySQL configuration file are here:
> log-bin
> sync_binlog=1
> innodb_safe_binlog
> innodb_buffer_pool_size = 384M
> innodb_additional_mem_pool_size = 20M
> innodb_log_file_size = 100M
> innodb_log_buffer_size = 8M
> innodb_flush_log_at_trx_commit = 1
> innodb_lock_wait_timeout = 50
>
> 3. on FreeBSD6.1 the /etc/fstab is followed:
> # Device Mountpoint FStype Options Dump Pass#
> /dev/da0s1g /home ufs rw 2 2
> and the outputs of tunefs is:
> mysql-test-4# tunefs -p /home
> tunefs: ACLs: (-a) disabled
> tunefs: MAC multilabel: (-l) disabled
> tunefs: soft updates: (-n) enabled
> tunefs: maximum blocks per file in a cylinder group: (-e) 2048
> tunefs: average file size: (-f) 16384
> tunefs: average number of files in a directory: (-s) 64
> tunefs: minimum percentage of free space: (-m) 8%
> tunefs: optimization preference: (-o) time
> tunefs: volume label: (-L)
>
> 4. on Debian3.1 the /etc/fstab is followed:
> # <file system> <mount point> <type> <options> <dump> <pass>
> /dev/sda9 /home ext3 defaults 0 2
>
>------------------------------------------------------------------------
>
>_______________________________________________
>freebsd-fs at freebsd.org mailing list
>http://lists.freebsd.org/mailman/listinfo/freebsd-fs
>To unsubscribe, send any mail to "freebsd-fs-unsubscribe at freebsd.org"
>  
>


More information about the freebsd-fs mailing list