Re: [reiserfs-list] reiserfs patch for 2.4.0-prerelease (dbench runs)
Hi, I ran a few more benchmarks on 2.4.0 final with 3.6.24. The results were a little susprising (all on the same box, just after boot, no X): MB/susersystem cpu time 3.6.24 7.154.0177,6 25% 14:57.5 3.6.24 14.553.2152.4 47% 7:15.7 3.6.24 5.655.6191.0 22% 18:36.4 reiserfs can do well, but notice how the system cpu seconds varies... I am not seeing such wild differences in ext2 runs, impling that they are due to something in reiserfs? Ed Tomlinson On Thursday 04 January 2001 20:41, Ed Tomlinson wrote: > Hi, > > I have been doing some dbench runs with the original and latest (Jan 4 > 22:xx) prerelease.diff kernels. Looks like both the latest kernels and the > reiserfs patch both are costing some performance. > > prerelease > MB/susersystem cpu time > ext2 14.650.5s76.4s 29% 7:14.9m > ext2 12.650.9s76.7s 25% 8:23.6m > > reiser14.553.8s 149.2s 46% 7:16.1m > reiser10.754.1s 154.5s 35% 9:49.9m > > prerelease (2.4.0 jan 4 22:xx) > MB/susersystem cpu time > ext2 10.552.8s81.5s 22% 10:02.3m > > reiser 5.854.6s 198.5s 23% 18:12.5m > reiser 6.455.1s 188.7s 24% 16.19.3m > > Using the notail reiserfs mount option improves the reiserfs numbers 10-20% > with both kernels. > > All benchmarks run on a K6-III 400 with 128M just after boot with no X > running. > > Comments? > Ed Tomlinson - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Re: [reiserfs-list] reiserfs patch for 2.4.0-prerelease (dbench runs)
Hi, I ran a few more benchmarks on 2.4.0 final with 3.6.24. The results were a little susprising (all on the same box, just after boot, no X): MB/susersystem cpu time 3.6.24 7.154.0177,6 25% 14:57.5 3.6.24 14.553.2152.4 47% 7:15.7 3.6.24 5.655.6191.0 22% 18:36.4 reiserfs can do well, but notice how the system cpu seconds varies... I am not seeing such wild differences in ext2 runs, impling that they are due to something in reiserfs? Ed Tomlinson On Thursday 04 January 2001 20:41, Ed Tomlinson wrote: Hi, I have been doing some dbench runs with the original and latest (Jan 4 22:xx) prerelease.diff kernels. Looks like both the latest kernels and the reiserfs patch both are costing some performance. prerelease MB/susersystem cpu time ext2 14.650.5s76.4s 29% 7:14.9m ext2 12.650.9s76.7s 25% 8:23.6m reiser14.553.8s 149.2s 46% 7:16.1m reiser10.754.1s 154.5s 35% 9:49.9m prerelease (2.4.0 jan 4 22:xx) MB/susersystem cpu time ext2 10.552.8s81.5s 22% 10:02.3m reiser 5.854.6s 198.5s 23% 18:12.5m reiser 6.455.1s 188.7s 24% 16.19.3m Using the notail reiserfs mount option improves the reiserfs numbers 10-20% with both kernels. All benchmarks run on a K6-III 400 with 128M just after boot with no X running. Comments? Ed Tomlinson - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
Re: [reiserfs-list] reiserfs patch for 2.4.0-prerelease
Hi, I have been doing some dbench runs with the original and latest (Jan 4 22:xx) prerelease.diff kernels. Looks like both the latest kernels and the reiserfs patch both are costing some performance. prerelease MB/susersystem cpu time ext214.650.5s76.4s 29% 7:14.9m ext212.650.9s76.7s 25% 8:23.6m reiser 14.553.8s 149.2s 46% 7:16.1m reiser 10.754.1s 154.5s 35% 9:49.9m prerelease (2.4.0 jan 4 22:xx) MB/susersystem cpu time ext210.552.8s81.5s 22% 10:02.3m reiser 5.854.6s 198.5s 23% 18:12.5m reiser 6.455.1s 188.7s 24% 16.19.3m Using the notail reiserfs mount option improves the reiserfs numbers 10-20% with both kernels. All benchmarks run on a K6-III 400 with 128M just after boot with no X running. Comments? Ed Tomlinson - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/
reiserfs patch for 2.4.0-prerelease
Hello everyone, This patch is meant to be applied on top of the reiserfs 3.6.23 patch to get everything working in the new prerelease kernels. The order is: untar linux-2.4.0-prerelease.tar.bz2 apply linux-2.4.0-test12-reiserfs-3.6.23.gz apply this patch apply the fs/super.c patch to make sure fsync_dev is called when unmounting /. This was already sent to l-k, I'll send to the reiserfs list as well. If you want to apply the prerelease-diff from the testing dir it can go before or after the reiserfs patches. These changes have been tested, but still need more. Don't apply if you aren't willing to bleed a little. Changes: Undoes the fs/buffer.c fuzz error from patching 3.6.23 into the prerelease kernels. Remove the super unlocking hack that was needed to avoid deadlocks with my old end_io tasks. The tasks are gone, so are the deadlocks. Change around the dirty inode call back so the reiserfs inodes get properly marked as dirty for the O_SYNC and dirty page stuff. This is kind of ugly, and I need to change it around more. But, it will work for now. Add proper O_SYNC and fsync support. Fix reiserfs makefile and page->mapping->host casts to work with the new kernel. Log the super before balancing to avoid warning messages about logging an unprepared buffer. Clears the dirty bit before sending buffers to submit_bh in reiserfs_writepage. Please send any bug reports to the reiserfs list. -chris diff -urN linux-3.6.23/fs/buffer.c linux/fs/buffer.c --- linux-3.6.23/fs/buffer.cThu Jan 4 15:45:33 2001 +++ linux/fs/buffer.c Thu Jan 4 15:43:22 2001 @@ -1647,8 +1647,6 @@ buffer_insert_inode_queue(bh, inode); need_balance_dirty = 1; } - if (buffer_uptodate(bh)) - continue ; } } diff -urN linux-3.6.23/fs/inode.c linux/fs/inode.c --- linux-3.6.23/fs/inode.c Thu Jan 4 15:45:33 2001 +++ linux/fs/inode.cThu Jan 4 15:43:34 2001 @@ -134,10 +134,6 @@ void __mark_inode_dirty(struct inode *inode, int flags) { struct super_block * sb = inode->i_sb; - if (inode->i_sb && inode->i_sb->s_op && inode->i_sb->s_op->dirty_inode){ - inode->i_sb->s_op->dirty_inode(inode) ; - return ; - } if (sb) { spin_lock(_lock); if ((inode->i_state & flags) != flags) { diff -urN linux-3.6.23/fs/reiserfs/Makefile linux/fs/reiserfs/Makefile --- linux-3.6.23/fs/reiserfs/Makefile Thu Jan 4 15:45:33 2001 +++ linux/fs/reiserfs/Makefile Thu Jan 4 15:43:34 2001 @@ -8,10 +8,10 @@ # Note 2! The CFLAGS definitions are now in the main makefile... O_TARGET := reiserfs.o -O_OBJS := bitmap.o do_balan.o namei.o inode.o file.o dir.o fix_node.o super.o prints.o objectid.o \ +obj-y := bitmap.o do_balan.o namei.o inode.o file.o dir.o fix_node.o super.o +prints.o objectid.o \ lbalance.o ibalance.o stree.o hashes.o buffer2.o tail_conversion.o journal.o resize.o tail_conversion.o version.o item_ops.o ioctl.o -M_OBJS := $(O_TARGET) +obj-m := $(O_TARGET) include $(TOPDIR)/Rules.make diff -urN linux-3.6.23/fs/reiserfs/file.c linux/fs/reiserfs/file.c --- linux-3.6.23/fs/reiserfs/file.c Thu Jan 4 15:45:33 2001 +++ linux/fs/reiserfs/file.cThu Jan 4 15:43:34 2001 @@ -90,11 +90,9 @@ if (!S_ISREG(p_s_inode->i_mode)) BUG (); - /* step one, flush all dirty buffers in the file's page map to disk */ - n_err = generic_buffer_fdatasync(p_s_inode, 0, ~0UL) ; - - /* step two, commit the current transaction to flush any metadata - ** changes + n_err = fsync_inode_buffers(p_s_inode) ; + /* commit the current transaction to flush any metadata + ** changes. sys_fsync takes care of flushing the dirty pages for us */ journal_begin(, p_s_inode->i_sb, jbegin_count) ; windex = push_journal_writer("sync_file") ; diff -urN linux-3.6.23/fs/reiserfs/fix_node.c linux/fs/reiserfs/fix_node.c --- linux-3.6.23/fs/reiserfs/fix_node.c Thu Jan 4 15:45:33 2001 +++ linux/fs/reiserfs/fix_node.cThu Jan 4 15:43:34 2001 @@ -2499,7 +2499,20 @@ if ( FILESYSTEM_CHANGED_TB (p_s_tb) ) return REPEAT_SEARCH; } - +/* we log the super here so we know it is prepared and inside the +** transaction before the do_balance starts. This way, do_balance +** won't have to prepare it later on, when we aren't allowed to +** schedule +*/ +reiserfs_prepare_for_journal(p_s_tb->tb_sb, +SB_BUFFER_WITH_SB(p_s_tb->tb_sb), 1) ; +if ( FILESYSTEM_CHANGED_TB (p_s_tb) ) { + reiserfs_restore_prepared_buffer(p_s_tb->tb_sb, +SB_BUFFER_WITH_SB(p_s_tb->tb_sb)) ; + return REPEAT_SEARCH; +} +journal_mark_dirty(p_s_tb->transaction_handle, p_s_tb->tb_sb, + SB_BUFFER_WITH_SB(p_s_tb->tb_sb)) ; #ifndef __KERNEL__ if (
reiserfs patch for 2.4.0-prerelease
Hello everyone, This patch is meant to be applied on top of the reiserfs 3.6.23 patch to get everything working in the new prerelease kernels. The order is: untar linux-2.4.0-prerelease.tar.bz2 apply linux-2.4.0-test12-reiserfs-3.6.23.gz apply this patch apply the fs/super.c patch to make sure fsync_dev is called when unmounting /. This was already sent to l-k, I'll send to the reiserfs list as well. If you want to apply the prerelease-diff from the testing dir it can go before or after the reiserfs patches. These changes have been tested, but still need more. Don't apply if you aren't willing to bleed a little. Changes: Undoes the fs/buffer.c fuzz error from patching 3.6.23 into the prerelease kernels. Remove the super unlocking hack that was needed to avoid deadlocks with my old end_io tasks. The tasks are gone, so are the deadlocks. Change around the dirty inode call back so the reiserfs inodes get properly marked as dirty for the O_SYNC and dirty page stuff. This is kind of ugly, and I need to change it around more. But, it will work for now. Add proper O_SYNC and fsync support. Fix reiserfs makefile and page-mapping-host casts to work with the new kernel. Log the super before balancing to avoid warning messages about logging an unprepared buffer. Clears the dirty bit before sending buffers to submit_bh in reiserfs_writepage. Please send any bug reports to the reiserfs list. -chris diff -urN linux-3.6.23/fs/buffer.c linux/fs/buffer.c --- linux-3.6.23/fs/buffer.cThu Jan 4 15:45:33 2001 +++ linux/fs/buffer.c Thu Jan 4 15:43:22 2001 @@ -1647,8 +1647,6 @@ buffer_insert_inode_queue(bh, inode); need_balance_dirty = 1; } - if (buffer_uptodate(bh)) - continue ; } } diff -urN linux-3.6.23/fs/inode.c linux/fs/inode.c --- linux-3.6.23/fs/inode.c Thu Jan 4 15:45:33 2001 +++ linux/fs/inode.cThu Jan 4 15:43:34 2001 @@ -134,10 +134,6 @@ void __mark_inode_dirty(struct inode *inode, int flags) { struct super_block * sb = inode-i_sb; - if (inode-i_sb inode-i_sb-s_op inode-i_sb-s_op-dirty_inode){ - inode-i_sb-s_op-dirty_inode(inode) ; - return ; - } if (sb) { spin_lock(inode_lock); if ((inode-i_state flags) != flags) { diff -urN linux-3.6.23/fs/reiserfs/Makefile linux/fs/reiserfs/Makefile --- linux-3.6.23/fs/reiserfs/Makefile Thu Jan 4 15:45:33 2001 +++ linux/fs/reiserfs/Makefile Thu Jan 4 15:43:34 2001 @@ -8,10 +8,10 @@ # Note 2! The CFLAGS definitions are now in the main makefile... O_TARGET := reiserfs.o -O_OBJS := bitmap.o do_balan.o namei.o inode.o file.o dir.o fix_node.o super.o prints.o objectid.o \ +obj-y := bitmap.o do_balan.o namei.o inode.o file.o dir.o fix_node.o super.o +prints.o objectid.o \ lbalance.o ibalance.o stree.o hashes.o buffer2.o tail_conversion.o journal.o resize.o tail_conversion.o version.o item_ops.o ioctl.o -M_OBJS := $(O_TARGET) +obj-m := $(O_TARGET) include $(TOPDIR)/Rules.make diff -urN linux-3.6.23/fs/reiserfs/file.c linux/fs/reiserfs/file.c --- linux-3.6.23/fs/reiserfs/file.c Thu Jan 4 15:45:33 2001 +++ linux/fs/reiserfs/file.cThu Jan 4 15:43:34 2001 @@ -90,11 +90,9 @@ if (!S_ISREG(p_s_inode-i_mode)) BUG (); - /* step one, flush all dirty buffers in the file's page map to disk */ - n_err = generic_buffer_fdatasync(p_s_inode, 0, ~0UL) ; - - /* step two, commit the current transaction to flush any metadata - ** changes + n_err = fsync_inode_buffers(p_s_inode) ; + /* commit the current transaction to flush any metadata + ** changes. sys_fsync takes care of flushing the dirty pages for us */ journal_begin(th, p_s_inode-i_sb, jbegin_count) ; windex = push_journal_writer("sync_file") ; diff -urN linux-3.6.23/fs/reiserfs/fix_node.c linux/fs/reiserfs/fix_node.c --- linux-3.6.23/fs/reiserfs/fix_node.c Thu Jan 4 15:45:33 2001 +++ linux/fs/reiserfs/fix_node.cThu Jan 4 15:43:34 2001 @@ -2499,7 +2499,20 @@ if ( FILESYSTEM_CHANGED_TB (p_s_tb) ) return REPEAT_SEARCH; } - +/* we log the super here so we know it is prepared and inside the +** transaction before the do_balance starts. This way, do_balance +** won't have to prepare it later on, when we aren't allowed to +** schedule +*/ +reiserfs_prepare_for_journal(p_s_tb-tb_sb, +SB_BUFFER_WITH_SB(p_s_tb-tb_sb), 1) ; +if ( FILESYSTEM_CHANGED_TB (p_s_tb) ) { + reiserfs_restore_prepared_buffer(p_s_tb-tb_sb, +SB_BUFFER_WITH_SB(p_s_tb-tb_sb)) ; + return REPEAT_SEARCH; +} +journal_mark_dirty(p_s_tb-transaction_handle, p_s_tb-tb_sb, + SB_BUFFER_WITH_SB(p_s_tb-tb_sb)) ; #ifndef __KERNEL__ if ( atomic_read
Re: [reiserfs-list] reiserfs patch for 2.4.0-prerelease
Hi, I have been doing some dbench runs with the original and latest (Jan 4 22:xx) prerelease.diff kernels. Looks like both the latest kernels and the reiserfs patch both are costing some performance. prerelease MB/susersystem cpu time ext214.650.5s76.4s 29% 7:14.9m ext212.650.9s76.7s 25% 8:23.6m reiser 14.553.8s 149.2s 46% 7:16.1m reiser 10.754.1s 154.5s 35% 9:49.9m prerelease (2.4.0 jan 4 22:xx) MB/susersystem cpu time ext210.552.8s81.5s 22% 10:02.3m reiser 5.854.6s 198.5s 23% 18:12.5m reiser 6.455.1s 188.7s 24% 16.19.3m Using the notail reiserfs mount option improves the reiserfs numbers 10-20% with both kernels. All benchmarks run on a K6-III 400 with 128M just after boot with no X running. Comments? Ed Tomlinson - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] Please read the FAQ at http://www.tux.org/lkml/