public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* What's in linux-2.6-block.git
@ 2006-09-12 10:11 Jens Axboe
  0 siblings, 0 replies; 9+ messages in thread
From: Jens Axboe @ 2006-09-12 10:11 UTC (permalink / raw)
  To: linux-kernel

Hi,

This lists the main features of the 'block' branch, which is bound for
Linus when 2.6.19 opens:

- Splitting of request->flags into two parts:
	- cmd type
	- modified flags
  Right now it's a bit of a mess, splitting this up invites a cleaner
  usage and also enables us to implement generic "messages" passed on
  the regular queue for the device.

- Abstract out the request back merging and put it into the core io
  scheduler layer. Cleans up all the io schedulers, and noop gets
  merging for "free".

- Abstract out the rbtree sorting. Gets rid of duplicated code in
  as/cfq/deadline.

- General shrinkage of the request structure.

- Killing dynamic rq private structures in deadline/as/cfq. This should
  speed up the io path somewhat, as we avoid allocating several
  structures (struct request + scheduler private request) for each io
  request.

- meta data io logging for blktrace.

- CFQ improvements.

- Make the block layer configurable through Kconfig (David Howells).

- Lots of cleanups.

The repo can be found here:

  git://git.kernel.dk/data/git/linux-2.6-block.git

Andrew Morton:
      CONFIG_BLOCK internal.h cleanups
      CONFIG_BLOCK: blk_congestion_wait() fix

David Howells:
      BLOCK: Move functions out of buffer code [try #6]
      BLOCK: Remove duplicate declaration of exit_io_context() [try #6]
      BLOCK: Stop fallback_migrate_page() from using page_has_buffers() [try #6]
      BLOCK: Separate the bounce buffering code from the highmem code [try #6]
      BLOCK: Don't call block_sync_page() from AFS [try #6]
      BLOCK: Move extern declarations out of fs/*.c into header files [try #6]
      BLOCK: Remove dependence on existence of blockdev_superblock [try #6]
      BLOCK: Dissociate generic_writepages() from mpage stuff [try #6]
      BLOCK: Move __invalidate_device() to block_dev.c [try #6]
      BLOCK: Move the loop device ioctl compat stuff to the loop driver [try #6]
      BLOCK: Move common FS-specific ioctls to linux/fs.h [try #6]
      BLOCK: Move the ReiserFS device ioctl compat stuff to the ReiserFS driver [try #6]
      BLOCK: Move the Ext2 device ioctl compat stuff to the Ext2 driver [try #6]
      BLOCK: Move the Ext3 device ioctl compat stuff to the Ext3 driver [try #6]
      BLOCK: Move the msdos device ioctl compat stuff to the msdos driver [try #6]
      BLOCK: Remove no-longer necessary linux/mpage.h inclusions [try #6]
      BLOCK: Remove no-longer necessary linux/buffer_head.h inclusions [try #6]
      BLOCK: Make it possible to disable the block layer [try #6]
      BLOCK: Make USB storage depend on SCSI rather than selecting it [try #6]

Jens Axboe:
      Split struct request ->flags into two parts
      elevator: move the backmerging logic into the elevator core
      rbtree: fixed reversed RB_EMPTY_NODE and rb_next/prev
      elevator: abstract out the rbtree sort handling
      as-iosched: migrate to using the elevator rb functions
      cfq-iosched: migrate to using the elevator rb functions
      deadline-iosched: migrate to using the elevator rb functions
      elevator: introduce a way to reuse rq for internal FIFO handling
      cfq-iosched: convert to using the FIFO elevator defines
      as-iosched: reuse rq for fifo
      as-iosched: remove arq->is_sync member
      deadline-iosched: remove elevator private drq request type
      cfq-iosched: remove the crq flag functions/variable
      Add one more pointer to struct request for IO scheduler usage
      cfq-iosched: kill crq
      as-iosched: kill arq
      Remove ->waiting member from struct request
      Remove struct request_list from struct request
      Remove ->rq_status from struct request
      Drop useless bio passing in may_queue/set_request API
      ll_rw_blk: cleanup __make_request()
      struct request: shrink and optimize some more
      cfq-iosched: cleanups, fixes, dead code removal
      cfq-iosched: kill cfq_exit_lock
      elevator: define ioc counting mechanism
      as-iosched: use new io context counting mechanism
      cfq-iosched: use new io context counting mechanism
      Audit block layer inlines
      Kill various deprecated/unused block layer defines/functions
      Make sure all block/io scheduler setups are node aware
      cfq-iosched: Kill O(N) runtime of cfq_resort_rr_list()
      cfq-iosched: kill the empty_list
      Add blk_start_queueing() helper
      cfq-iosched: improve queue preemption
      ll_rw_blk: allow more flexibility for read_ahead_kb store
      Allow file systems to differentiate between data and meta reads
      ext3: make meta data reads use READ_META
      cfq-iosched: use metadata read flag
      blktrace: support for logging metadata reads
      SCSI: scsi_done_q is unused
      Update axboe@suse.de email address

Martin Peschke:
      [Patch] blktrace: cleanup using on_each_cpu

Milan Broz:
      fix creating zero sized bio mempools in low memory system

Oleg Nesterov:
      exit_io_context: don't disable irqs
      Don't need to disable interrupts for tasklist_lock

 MAINTAINERS                     |    8 
 arch/frv/Kconfig                |    4 
 arch/frv/kernel/time.c          |   81 ++++
 arch/ia64/kernel/sys_ia64.c     |   28 +
 arch/sparc/kernel/sys_sparc.c   |   27 +
 arch/sparc64/kernel/sys_sparc.c |   36 +-
 arch/um/drivers/ubd_kern.c      |    2 
 block/Kconfig                   |   20 +
 block/Kconfig.iosched           |    3 
 block/Makefile                  |    2 
 block/as-iosched.c              |  672 +++++++-----------------------
 block/blktrace.c                |   26 -
 block/cfq-iosched.c             |  865 +++++++++++++--------------------------
 block/deadline-iosched.c        |  464 +++------------------
 block/elevator.c                |  315 ++++++++++++--
 block/ll_rw_blk.c               |  223 ++++------
 block/noop-iosched.c            |    2 
 block/scsi_ioctl.c              |    6 
 drivers/block/DAC960.c          |    2 
 drivers/block/Kconfig           |    4 
 drivers/block/cciss.c           |    1 
 drivers/block/cpqarray.c        |    1 
 drivers/block/floppy.c          |    4 
 drivers/block/loop.c            |  160 +++++++
 drivers/block/nbd.c             |    8 
 drivers/block/paride/pd.c       |    6 
 drivers/block/pktcdvd.c         |    8 
 drivers/block/swim3.c           |    4 
 drivers/block/swim_iop.c        |    4 
 drivers/block/xd.c              |    2 
 drivers/cdrom/Kconfig           |    2 
 drivers/cdrom/cdrom.c           |    2 
 drivers/cdrom/cdu31a.c          |    4 
 drivers/char/Kconfig            |    1 
 drivers/char/random.c           |    4 
 drivers/fc4/fc.c                |    1 
 drivers/ide/Kconfig             |    4 
 drivers/ide/ide-cd.c            |   69 ++-
 drivers/ide/ide-disk.c          |    5 
 drivers/ide/ide-dma.c           |    2 
 drivers/ide/ide-floppy.c        |   17 -
 drivers/ide/ide-io.c            |   50 +-
 drivers/ide/ide-lib.c           |    5 
 drivers/ide/ide-proc.c          |    2 
 drivers/ide/ide-tape.c          |   14 -
 drivers/ide/ide-taskfile.c      |    8 
 drivers/ide/ide.c               |    8 
 drivers/ide/legacy/hd.c         |    2 
 drivers/ide/pci/sis5513.c       |    2 
 drivers/md/Kconfig              |    3 
 drivers/md/dm-emc.c             |    3 
 drivers/message/i2o/Kconfig     |    2 
 drivers/message/i2o/i2o_block.c |    7 
 drivers/mmc/Kconfig             |    2 
 drivers/mmc/Makefile            |    3 
 drivers/mmc/mmc_queue.c         |    6 
 drivers/mtd/Kconfig             |   12 -
 drivers/mtd/devices/Kconfig     |    2 
 drivers/mtd/mtd_blkdevs.c       |    2 
 drivers/net/Kconfig             |    2 
 drivers/s390/block/Kconfig      |    2 
 drivers/s390/block/dasd_diag.c  |    2 
 drivers/s390/block/dasd_eckd.c  |    2 
 drivers/s390/block/dasd_fba.c   |    2 
 drivers/scsi/Kconfig            |    2 
 drivers/scsi/aic7xxx_old.c      |    4 
 drivers/scsi/ide-scsi.c         |   16 -
 drivers/scsi/pluto.c            |    6 
 drivers/scsi/scsi.c             |   13 -
 drivers/scsi/scsi_lib.c         |   37 +-
 drivers/scsi/sd.c               |    5 
 drivers/scsi/sun3_NCR5380.c     |    2 
 drivers/scsi/sun3_scsi.c        |    2 
 drivers/scsi/sun3_scsi_vme.c    |    2 
 drivers/usb/storage/Kconfig     |    5 
 fs/Kconfig                      |   31 +
 fs/Makefile                     |   14 -
 fs/afs/file.c                   |    2 
 fs/binfmt_elf.c                 |    1 
 fs/bio.c                        |    4 
 fs/block_dev.c                  |   23 +
 fs/buffer.c                     |  174 --------
 fs/char_dev.c                   |    1 
 fs/cifs/file.c                  |    1 
 fs/cifs/inode.c                 |    1 
 fs/cifs/ioctl.c                 |    7 
 fs/compat.c                     |    8 
 fs/compat_ioctl.c               |  208 +--------
 fs/dcache.c                     |    4 
 fs/ext2/dir.c                   |    3 
 fs/ext2/ext2.h                  |    1 
 fs/ext2/file.c                  |    6 
 fs/ext2/ioctl.c                 |   32 +
 fs/ext3/dir.c                   |    3 
 fs/ext3/file.c                  |    3 
 fs/ext3/inode.c                 |   16 -
 fs/ext3/ioctl.c                 |   55 ++
 fs/ext3/namei.c                 |    3 
 fs/fat/dir.c                    |   56 +++
 fs/fs-writeback.c               |    9 
 fs/hfsplus/hfsplus_fs.h         |    8 
 fs/hfsplus/ioctl.c              |   17 -
 fs/inode.c                      |   21 -
 fs/internal.h                   |   55 ++
 fs/ioprio.c                     |   19 +
 fs/jfs/ioctl.c                  |   15 -
 fs/mpage.c                      |    2 
 fs/namespace.c                  |   12 -
 fs/nfs/direct.c                 |   50 ++
 fs/nfs/read.c                   |   24 -
 fs/nfs/write.c                  |   38 +-
 fs/no-block.c                   |   22 +
 fs/partitions/Makefile          |    2 
 fs/proc/proc_misc.c             |   11 
 fs/quota.c                      |   44 +-
 fs/reiserfs/dir.c               |    3 
 fs/reiserfs/file.c              |    4 
 fs/reiserfs/ioctl.c             |   35 ++
 fs/splice.c                     |    2 
 fs/super.c                      |   36 ++
 fs/sync.c                       |  113 +++++
 fs/xfs/Kconfig                  |    1 
 include/asm-i386/Kbuild         |    2 
 include/asm-ia64/mman.h         |    8 
 include/asm-sh/page.h           |    2 
 include/asm-sparc/mman.h        |    8 
 include/asm-sparc64/mman.h      |    8 
 include/linux/atmdev.h          |    2 
 include/linux/bio.h             |    2 
 include/linux/blkdev.h          |  333 ++++++++-------
 include/linux/blktrace_api.h    |    3 
 include/linux/buffer_head.h     |   19 +
 include/linux/compat.h          |    1 
 include/linux/compat_ioctl.h    |    8 
 include/linux/elevator.h        |   68 +++
 include/linux/ext2_fs.h         |   66 ++-
 include/linux/ext3_fs.h         |   26 +
 include/linux/fs.h              |   67 +++
 include/linux/genhd.h           |    4 
 include/linux/hrtimer.h         |    1 
 include/linux/ktime.h           |    7 
 include/linux/mm.h              |    4 
 include/linux/mpage.h           |    7 
 include/linux/nfs_fs.h          |    6 
 include/linux/nfs_xdr.h         |    4 
 include/linux/pci_ids.h         |    2 
 include/linux/raid/md.h         |    3 
 include/linux/raid/md_k.h       |    3 
 include/linux/ramfs.h           |    1 
 include/linux/rbtree.h          |    2 
 include/linux/reiserfs_fs.h     |   37 +-
 include/linux/sched.h           |    1 
 include/linux/sysfs.h           |    9 
 include/linux/tty.h             |    3 
 include/linux/writeback.h       |    2 
 include/scsi/scsi_tcq.h         |    5 
 init/Kconfig                    |    2 
 init/do_mounts.c                |   13 +
 kernel/exit.c                   |    1 
 kernel/futex.c                  |   84 +++-
 kernel/panic.c                  |    2 
 kernel/power/Kconfig            |    6 
 kernel/spinlock.c               |    2 
 kernel/sys_ni.c                 |    5 
 lib/rbtree.c                    |    6 
 mm/Makefile                     |    4 
 mm/bounce.c                     |  302 ++++++++++++++
 mm/filemap.c                    |   34 ++
 mm/highmem.c                    |  281 -------------
 mm/migrate.c                    |    4 
 mm/mmap.c                       |   17 -
 mm/page-writeback.c             |  143 ++++++
 mm/truncate.c                   |   37 +-
 security/seclvl.c               |    4 
 174 files changed, 3127 insertions(+), 3080 deletions(-)
 create mode 100644 fs/internal.h
 create mode 100644 fs/no-block.c
 create mode 100644 mm/bounce.c

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
@ 2006-09-13 10:59 Al Boldi
  2006-09-13 10:59 ` Jens Axboe
  0 siblings, 1 reply; 9+ messages in thread
From: Al Boldi @ 2006-09-13 10:59 UTC (permalink / raw)
  To: linux-kernel

Jens Axboe  wrote:
> This lists the main features of the 'block' branch, which is bound for
> Linus when 2.6.19 opens:
>
> - Splitting of request->flags into two parts:
>         - cmd type
>         - modified flags
>   Right now it's a bit of a mess, splitting this up invites a cleaner
>   usage and also enables us to implement generic "messages" passed on
>   the regular queue for the device.
>
> - Abstract out the request back merging and put it into the core io
>   scheduler layer. Cleans up all the io schedulers, and noop gets
>   merging for "free".
>
> - Abstract out the rbtree sorting. Gets rid of duplicated code in
>   as/cfq/deadline.
>
> - General shrinkage of the request structure.
>
> - Killing dynamic rq private structures in deadline/as/cfq. This should
>   speed up the io path somewhat, as we avoid allocating several
>   structures (struct request + scheduler private request) for each io
>   request.
>
> - meta data io logging for blktrace.
>
> - CFQ improvements.
>
> - Make the block layer configurable through Kconfig (David Howells).
>
> - Lots of cleanups.

Does it also address the strange "max_sectors_kb<>192 causes a 50%-slowdown" 
problem?


Thanks!

--
Al


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
  2006-09-13 10:59 What's in linux-2.6-block.git Al Boldi
@ 2006-09-13 10:59 ` Jens Axboe
  2006-09-13 11:35   ` Al Boldi
  0 siblings, 1 reply; 9+ messages in thread
From: Jens Axboe @ 2006-09-13 10:59 UTC (permalink / raw)
  To: Al Boldi; +Cc: linux-kernel

On Wed, Sep 13 2006, Al Boldi wrote:
> Jens Axboe  wrote:
> > This lists the main features of the 'block' branch, which is bound for
> > Linus when 2.6.19 opens:
> >
> > - Splitting of request->flags into two parts:
> >         - cmd type
> >         - modified flags
> >   Right now it's a bit of a mess, splitting this up invites a cleaner
> >   usage and also enables us to implement generic "messages" passed on
> >   the regular queue for the device.
> >
> > - Abstract out the request back merging and put it into the core io
> >   scheduler layer. Cleans up all the io schedulers, and noop gets
> >   merging for "free".
> >
> > - Abstract out the rbtree sorting. Gets rid of duplicated code in
> >   as/cfq/deadline.
> >
> > - General shrinkage of the request structure.
> >
> > - Killing dynamic rq private structures in deadline/as/cfq. This should
> >   speed up the io path somewhat, as we avoid allocating several
> >   structures (struct request + scheduler private request) for each io
> >   request.
> >
> > - meta data io logging for blktrace.
> >
> > - CFQ improvements.
> >
> > - Make the block layer configurable through Kconfig (David Howells).
> >
> > - Lots of cleanups.
> 
> Does it also address the strange "max_sectors_kb<>192 causes a 50%-slowdown" 
> problem?

(remember to cc me/others when replying, I can easily miss lkml
messages for several days otherwise).

It does not, the investigation of that is still pending I'm afraid. The
data is really puzzling, I'm inclined to think it's drive related. Are
you reproducing it just one box/drive, or on several?

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
  2006-09-13 10:59 ` Jens Axboe
@ 2006-09-13 11:35   ` Al Boldi
  2006-09-13 11:56     ` Jens Axboe
  2006-09-13 14:23     ` John Stoffel
  0 siblings, 2 replies; 9+ messages in thread
From: Al Boldi @ 2006-09-13 11:35 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel

Jens Axboe wrote:
> On Wed, Sep 13 2006, Al Boldi wrote:
> > Jens Axboe  wrote:
> > > This lists the main features of the 'block' branch, which is bound for
> > > Linus when 2.6.19 opens:
> > >
> > > - Splitting of request->flags into two parts:
> > >         - cmd type
> > >         - modified flags
> > >   Right now it's a bit of a mess, splitting this up invites a cleaner
> > >   usage and also enables us to implement generic "messages" passed on
> > >   the regular queue for the device.
> > >
> > > - Abstract out the request back merging and put it into the core io
> > >   scheduler layer. Cleans up all the io schedulers, and noop gets
> > >   merging for "free".
> > >
> > > - Abstract out the rbtree sorting. Gets rid of duplicated code in
> > >   as/cfq/deadline.
> > >
> > > - General shrinkage of the request structure.
> > >
> > > - Killing dynamic rq private structures in deadline/as/cfq. This
> > > should speed up the io path somewhat, as we avoid allocating several
> > > structures (struct request + scheduler private request) for each io
> > > request.
> > >
> > > - meta data io logging for blktrace.
> > >
> > > - CFQ improvements.
> > >
> > > - Make the block layer configurable through Kconfig (David Howells).
> > >
> > > - Lots of cleanups.
> >
> > Does it also address the strange "max_sectors_kb<>192 causes a
> > 50%-slowdown" problem?
>
> (remember to cc me/others when replying, I can easily miss lkml
> messages for several days otherwise).
>
> It does not, the investigation of that is still pending I'm afraid. The
> data is really puzzling, I'm inclined to think it's drive related. Are
> you reproducing it just one box/drive, or on several?

Several boxes, same drive.

/dev/hda:

ATA device, with non-removable media
	Model Number:       WDC WD1200JB-00DUA0                     
	Serial Number:      WD-WMACM1007651
	Firmware Revision:  65.13G65
Standards:
	Supported: 6 5 4 3 
	Likely used: 6
Configuration:
	Logical		max	current
	cylinders	16383	65535
	heads		16	1
	sectors/track	63	63
	--
	CHS current addressable sectors:    4128705
	LBA    user addressable sectors:  234441648
	LBA48  user addressable sectors:  234441648
	device size with M = 1024*1024:      114473 MBytes
	device size with M = 1000*1000:      120034 MBytes (120 GB)
Capabilities:
	LBA, IORDY(can be disabled)
	bytes avail on r/w long: 98	Queue depth: 1
	Standby timer values: spec'd by Standard, with device specific minimum
	R/W multiple sector transfer: Max = 16	Current = 16
	Recommended acoustic management value: 128, current value: 254
	DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 
	     Cycle time: min=120ns recommended=120ns
	PIO: pio0 pio1 pio2 pio3 pio4 
	     Cycle time: no flow control=120ns  IORDY flow control=120ns
Commands/features:
	Enabled	Supported:
	   *	READ BUFFER cmd
	   *	WRITE BUFFER cmd
	   *	Host Protected Area feature set
	   *	Look-ahead
	   *	Write cache
	   *	Power Management feature set
		Security Mode feature set
	   *	SMART feature set
	   *	FLUSH CACHE EXT command
	   *	Mandatory FLUSH CACHE command 
	   *	Device Configuration Overlay feature set 
	   *	48-bit Address feature set 
		Automatic Acoustic Management feature set 
		SET MAX security extension
	   *	DOWNLOAD MICROCODE cmd
	   *	SMART self-test 
	   *	SMART error logging 
Security: 
		supported
	not	enabled
	not	locked
		frozen
	not	expired: security count
	not	supported: enhanced erase
HW reset results:
	CBLID- above Vih
	Device num = 0 determined by the jumper
Checksum: correct


Thanks!

--
Al


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
  2006-09-13 11:35   ` Al Boldi
@ 2006-09-13 11:56     ` Jens Axboe
  2006-09-13 17:52       ` Al Boldi
  2006-09-13 14:23     ` John Stoffel
  1 sibling, 1 reply; 9+ messages in thread
From: Jens Axboe @ 2006-09-13 11:56 UTC (permalink / raw)
  To: Al Boldi; +Cc: linux-kernel

On Wed, Sep 13 2006, Al Boldi wrote:
> Jens Axboe wrote:
> > On Wed, Sep 13 2006, Al Boldi wrote:
> > > Jens Axboe  wrote:
> > > > This lists the main features of the 'block' branch, which is bound for
> > > > Linus when 2.6.19 opens:
> > > >
> > > > - Splitting of request->flags into two parts:
> > > >         - cmd type
> > > >         - modified flags
> > > >   Right now it's a bit of a mess, splitting this up invites a cleaner
> > > >   usage and also enables us to implement generic "messages" passed on
> > > >   the regular queue for the device.
> > > >
> > > > - Abstract out the request back merging and put it into the core io
> > > >   scheduler layer. Cleans up all the io schedulers, and noop gets
> > > >   merging for "free".
> > > >
> > > > - Abstract out the rbtree sorting. Gets rid of duplicated code in
> > > >   as/cfq/deadline.
> > > >
> > > > - General shrinkage of the request structure.
> > > >
> > > > - Killing dynamic rq private structures in deadline/as/cfq. This
> > > > should speed up the io path somewhat, as we avoid allocating several
> > > > structures (struct request + scheduler private request) for each io
> > > > request.
> > > >
> > > > - meta data io logging for blktrace.
> > > >
> > > > - CFQ improvements.
> > > >
> > > > - Make the block layer configurable through Kconfig (David Howells).
> > > >
> > > > - Lots of cleanups.
> > >
> > > Does it also address the strange "max_sectors_kb<>192 causes a
> > > 50%-slowdown" problem?
> >
> > (remember to cc me/others when replying, I can easily miss lkml
> > messages for several days otherwise).
> >
> > It does not, the investigation of that is still pending I'm afraid. The
> > data is really puzzling, I'm inclined to think it's drive related. Are
> > you reproducing it just one box/drive, or on several?
> 
> Several boxes, same drive.

Have you / can you try and reproduce with another drive as well? It'd be
an interesting data point.

-- 
Jens Axboe


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
  2006-09-13 11:35   ` Al Boldi
  2006-09-13 11:56     ` Jens Axboe
@ 2006-09-13 14:23     ` John Stoffel
  2006-09-13 17:52       ` Al Boldi
  1 sibling, 1 reply; 9+ messages in thread
From: John Stoffel @ 2006-09-13 14:23 UTC (permalink / raw)
  To: Al Boldi; +Cc: Jens Axboe, linux-kernel

>>>>> "Al" == Al Boldi <a1426z@gawab.com> writes:

Al> Jens Axboe wrote:
>> On Wed, Sep 13 2006, Al Boldi wrote:
>> > Jens Axboe  wrote:
>> > > This lists the main features of the 'block' branch, which is bound for
>> > > Linus when 2.6.19 opens:
>> > >
>> > > - Splitting of request->flags into two parts:
>> > >         - cmd type
>> > >         - modified flags
>> > >   Right now it's a bit of a mess, splitting this up invites a cleaner
>> > >   usage and also enables us to implement generic "messages" passed on
>> > >   the regular queue for the device.
>> > >
>> > > - Abstract out the request back merging and put it into the core io
>> > >   scheduler layer. Cleans up all the io schedulers, and noop gets
>> > >   merging for "free".
>> > >
>> > > - Abstract out the rbtree sorting. Gets rid of duplicated code in
>> > >   as/cfq/deadline.
>> > >
>> > > - General shrinkage of the request structure.
>> > >
>> > > - Killing dynamic rq private structures in deadline/as/cfq. This
>> > > should speed up the io path somewhat, as we avoid allocating several
>> > > structures (struct request + scheduler private request) for each io
>> > > request.
>> > >
>> > > - meta data io logging for blktrace.
>> > >
>> > > - CFQ improvements.
>> > >
>> > > - Make the block layer configurable through Kconfig (David Howells).
>> > >
>> > > - Lots of cleanups.
>> >
>> > Does it also address the strange "max_sectors_kb<>192 causes a
>> > 50%-slowdown" problem?
>> 
>> (remember to cc me/others when replying, I can easily miss lkml
>> messages for several days otherwise).
>> 
>> It does not, the investigation of that is still pending I'm afraid. The
>> data is really puzzling, I'm inclined to think it's drive related. Are
>> you reproducing it just one box/drive, or on several?

Al> Several boxes, same drive.

Al> /dev/hda:

Al> ATA device, with non-removable media
Al> 	Model Number:       WDC WD1200JB-00DUA0                     
Al> 	Serial Number:      WD-WMACM1007651
Al> 	Firmware Revision:  65.13G65
Al> Standards:
Al> 	Supported: 6 5 4 3 
Al> 	Likely used: 6

I've got a pair of drives which are very close in model type, and I
can run some non-destructive tests on them if you like to confirm
what's going on here if you like:

    /dev/hde:

    ATA device, with non-removable media
	    Model Number:       WDC WD1200JB-00CRA1                     
	    Serial Number:      WD-WMA8C4365875
	    Firmware Revision:  17.07W17
    Standards:
	    Supported: 5 4 3 
	    Likely used: 6
    jfsnew:~> sudo hdparm -I /dev/hdg | head

    /dev/hdg:

    ATA device, with non-removable media
	    Model Number:       WDC WD1200JB-00EVA0                     
	    Serial Number:      WD-WMAEK2844058
	    Firmware Revision:  15.05R15
    Standards:
	    Supported: 6 5 4 
	    Likely used: 6


The drives have different defaul max_sectors too:

    > cat /sys/block/hdg/queue/max_sectors_kb
    512
    > cat /sys/block/hde/queue/max_sectors_kb
    128

Let me know your test method and I'll run it here and post the
results.

John

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
  2006-09-13 11:56     ` Jens Axboe
@ 2006-09-13 17:52       ` Al Boldi
  0 siblings, 0 replies; 9+ messages in thread
From: Al Boldi @ 2006-09-13 17:52 UTC (permalink / raw)
  To: Jens Axboe; +Cc: linux-kernel

Jens Axboe wrote:
> On Wed, Sep 13 2006, Al Boldi wrote:
> > Jens Axboe wrote:
> > > On Wed, Sep 13 2006, Al Boldi wrote:
> > > > Jens Axboe  wrote:
> > > > > This lists the main features of the 'block' branch, which is bound
> > > > > for Linus when 2.6.19 opens:
> > > > >
> > > > > - Splitting of request->flags into two parts:
> > > > >         - cmd type
> > > > >         - modified flags
> > > > >   Right now it's a bit of a mess, splitting this up invites a
> > > > > cleaner usage and also enables us to implement generic "messages"
> > > > > passed on the regular queue for the device.
> > > > >
> > > > > - Abstract out the request back merging and put it into the core
> > > > > io scheduler layer. Cleans up all the io schedulers, and noop gets
> > > > > merging for "free".
> > > > >
> > > > > - Abstract out the rbtree sorting. Gets rid of duplicated code in
> > > > >   as/cfq/deadline.
> > > > >
> > > > > - General shrinkage of the request structure.
> > > > >
> > > > > - Killing dynamic rq private structures in deadline/as/cfq. This
> > > > > should speed up the io path somewhat, as we avoid allocating
> > > > > several structures (struct request + scheduler private request)
> > > > > for each io request.
> > > > >
> > > > > - meta data io logging for blktrace.
> > > > >
> > > > > - CFQ improvements.
> > > > >
> > > > > - Make the block layer configurable through Kconfig (David
> > > > > Howells).
> > > > >
> > > > > - Lots of cleanups.
> > > >
> > > > Does it also address the strange "max_sectors_kb<>192 causes a
> > > > 50%-slowdown" problem?
> > >
> > > (remember to cc me/others when replying, I can easily miss lkml
> > > messages for several days otherwise).
> > >
> > > It does not, the investigation of that is still pending I'm afraid.
> > > The data is really puzzling, I'm inclined to think it's drive related.
> > > Are you reproducing it just one box/drive, or on several?
> >
> > Several boxes, same drive.
>
> Have you / can you try and reproduce with another drive as well? It'd be
> an interesting data point.

Not really, as this drive is the only one supporting max_sectors_kb>128.


Thanks!

--
Al


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
  2006-09-13 14:23     ` John Stoffel
@ 2006-09-13 17:52       ` Al Boldi
  2006-09-14 19:46         ` John Stoffel
  0 siblings, 1 reply; 9+ messages in thread
From: Al Boldi @ 2006-09-13 17:52 UTC (permalink / raw)
  To: John Stoffel; +Cc: Jens Axboe, linux-kernel

John Stoffel wrote:
> >>>>> "Al" == Al Boldi <a1426z@gawab.com> writes:
>
> Al> Jens Axboe wrote:
> >> On Wed, Sep 13 2006, Al Boldi wrote:
> >> > Jens Axboe  wrote:
> >> > > This lists the main features of the 'block' branch, which is bound
> >> > > for Linus when 2.6.19 opens:
> >> > >
> >> > > - Splitting of request->flags into two parts:
> >> > >         - cmd type
> >> > >         - modified flags
> >> > >   Right now it's a bit of a mess, splitting this up invites a
> >> > > cleaner usage and also enables us to implement generic "messages"
> >> > > passed on the regular queue for the device.
> >> > >
> >> > > - Abstract out the request back merging and put it into the core io
> >> > >   scheduler layer. Cleans up all the io schedulers, and noop gets
> >> > >   merging for "free".
> >> > >
> >> > > - Abstract out the rbtree sorting. Gets rid of duplicated code in
> >> > >   as/cfq/deadline.
> >> > >
> >> > > - General shrinkage of the request structure.
> >> > >
> >> > > - Killing dynamic rq private structures in deadline/as/cfq. This
> >> > > should speed up the io path somewhat, as we avoid allocating
> >> > > several structures (struct request + scheduler private request) for
> >> > > each io request.
> >> > >
> >> > > - meta data io logging for blktrace.
> >> > >
> >> > > - CFQ improvements.
> >> > >
> >> > > - Make the block layer configurable through Kconfig (David
> >> > > Howells).
> >> > >
> >> > > - Lots of cleanups.
> >> >
> >> > Does it also address the strange "max_sectors_kb<>192 causes a
> >> > 50%-slowdown" problem?
> >>
> >> (remember to cc me/others when replying, I can easily miss lkml
> >> messages for several days otherwise).
> >>
> >> It does not, the investigation of that is still pending I'm afraid. The
> >> data is really puzzling, I'm inclined to think it's drive related. Are
> >> you reproducing it just one box/drive, or on several?
>
> Al> Several boxes, same drive.
>
> Al> /dev/hda:
>
> Al> ATA device, with non-removable media
> Al> 	Model Number:       WDC WD1200JB-00DUA0
> Al> 	Serial Number:      WD-WMACM1007651
> Al> 	Firmware Revision:  65.13G65
> Al> Standards:
> Al> 	Supported: 6 5 4 3
> Al> 	Likely used: 6
>
> I've got a pair of drives which are very close in model type, and I
> can run some non-destructive tests on them if you like to confirm
> what's going on here if you like:
>
>     /dev/hde:
>
>     ATA device, with non-removable media
> 	    Model Number:       WDC WD1200JB-00CRA1
> 	    Serial Number:      WD-WMA8C4365875
> 	    Firmware Revision:  17.07W17
>     Standards:
> 	    Supported: 5 4 3
> 	    Likely used: 6
>     jfsnew:~> sudo hdparm -I /dev/hdg | head
>
>     /dev/hdg:
>
>     ATA device, with non-removable media
> 	    Model Number:       WDC WD1200JB-00EVA0
> 	    Serial Number:      WD-WMAEK2844058
> 	    Firmware Revision:  15.05R15
>     Standards:
> 	    Supported: 6 5 4
> 	    Likely used: 6
>
> The drives have different defaul max_sectors too:
>     > cat /sys/block/hdg/queue/max_sectors_kb
>
>     512
>
>     > cat /sys/block/hde/queue/max_sectors_kb
>
>     128
>
> Let me know your test method and I'll run it here and post the
> results.

Thanks for your input!

Are you running UDMA5?  Can you dump the full hdparm -I

What thruput do you get with cat /dev/hd[eg] > /dev/null?

What does cat /sys/block/hde/queue/read_ahead_kb say?

Then try this for best performance:
echo 192 > /sys/block/hde/queue/max_sectors_kb
echo 192 > /sys/block/hde/queue/read_ahead_kb

and repeat the thruput test reporting vmstat results.


Thanks!

--
Al


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: What's in linux-2.6-block.git
  2006-09-13 17:52       ` Al Boldi
@ 2006-09-14 19:46         ` John Stoffel
  0 siblings, 0 replies; 9+ messages in thread
From: John Stoffel @ 2006-09-14 19:46 UTC (permalink / raw)
  To: Al Boldi; +Cc: John Stoffel, Jens Axboe, linux-kernel

>>>>> "Al" == Al Boldi <a1426z@gawab.com> writes:

Al> Thanks for your input!

You're welcome, sorry I've been delayed in getting more details to
you.  I'll try and run some tests tonight, but the six month old kept
me up alot last niht.

Al> Are you running UDMA5?  Can you dump the full hdparm -I

Here's the info for each drive.  They're on an HPT302 Rev 1 controller
in my system.

/dev/hde:

ATA device, with non-removable media
        Model Number:       WDC WD1200JB-00CRA1                     
        Serial Number:      WD-WMA8C4365875
        Firmware Revision:  17.07W17
Standards:
        Supported: 5 4 3 
        Likely used: 6
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16
        sectors/track   63      63
        --
        CHS current addressable sectors:   16514064
        LBA    user addressable sectors:  234441648
        device size with M = 1024*1024:      114473 MBytes
        device size with M = 1000*1000:      120034 MBytes (120 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        bytes avail on r/w long: 40
        Standby timer values: spec'd by Standard, with device specific
minimum
        R/W multiple sector transfer: Max = 16  Current = 16
        Recommended acoustic management value: 128, current value: 254
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4 
             Cycle time: no flow control=120ns  IORDY flow
control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    DOWNLOAD_MICROCODE
                SET_MAX security extension
                Automatic Acoustic Management feature set
           *    Device Configuration Overlay feature set
           *    SMART error logging
           *    SMART self-test
Security: 
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
        not     supported: enhanced erase
HW reset results:
        CBLID- above Vih
        Device num = 0 determined by the jumper
Checksum: correct



/dev/hdg:

ATA device, with non-removable media
        Model Number:       WDC WD1200JB-00EVA0                     
        Serial Number:      WD-WMAEK2844058
        Firmware Revision:  15.05R15
Standards:
        Supported: 6 5 4 
        Likely used: 6
Configuration:
        Logical         max     current
        cylinders       16383   65535
        heads           16      1
        sectors/track   63      63
        --
        CHS current addressable sectors:    4128705
        LBA    user addressable sectors:  234441648
        LBA48  user addressable sectors:  234441648
        device size with M = 1024*1024:      114473 MBytes
        device size with M = 1000*1000:      120034 MBytes (120 GB)
Capabilities:
        LBA, IORDY(can be disabled)
        Standby timer values: spec'd by Standard, with device specific
minimum
        R/W multiple sector transfer: Max = 16  Current = 16
        Recommended acoustic management value: 128, current value: 254
        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5 
             Cycle time: min=120ns recommended=120ns
        PIO: pio0 pio1 pio2 pio3 pio4 
             Cycle time: no flow control=120ns  IORDY flow
control=120ns
Commands/features:
        Enabled Supported:
           *    SMART feature set
                Security Mode feature set
           *    Power Management feature set
           *    Write cache
           *    Look-ahead
           *    Host Protected Area feature set
           *    WRITE_BUFFER command
           *    READ_BUFFER command
           *    DOWNLOAD_MICROCODE
                SET_MAX security extension
                Automatic Acoustic Management feature set
           *    48-bit Address feature set
           *    Device Configuration Overlay feature set
           *    Mandatory FLUSH_CACHE
           *    FLUSH_CACHE_EXT
           *    SMART error logging
           *    SMART self-test
Security: 
                supported
        not     enabled
        not     locked
        not     frozen
        not     expired: security count
        not     supported: enhanced erase
HW reset results:
        CBLID- above Vih
        Device num = 0 determined by CSEL
Checksum: correct


Al> What thruput do you get with cat /dev/hd[eg] > /dev/null?

Al> What does cat /sys/block/hde/queue/read_ahead_kb say?

    > cat /sys/block/hde/queue/max_hw_sectors_kb 
    128
    > cat /sys/block/hde/queue/max_sectors_kb
    128
    > cat /sys/block/hde/queue/read_ahead_kb
    1024
    > cat /sys/block/hde/queue/scheduler 
    noop [anticipatory] deadline cfq 
    > cat /sys/block/hde/queue/nr_requests
    128

    > cat /sys/block/hdg/queue/max_hw_sectors_kb 
    1024
    > cat /sys/block/hdg/queue/max_sectors_kb 
    512
    > cat /sys/block/hdg/queue/read_ahead_kb
    1024
    > cat /sys/block/hdg/queue/scheduler 
    noop [anticipatory] deadline cfq 
    > cat /sys/block/hdg/queue/nr_requests 
    128

Al> Then try this for best performance:
Al> echo 192 > /sys/block/hde/queue/max_sectors_kb
Al> echo 192 > /sys/block/hde/queue/read_ahead_kb

Al> and repeat the thruput test reporting vmstat results.

I'll try and do this all tonight if I get a chance.

>From looking at my setup, I've got two identical drives which are
slightly different in terms of BIOS levels, as well as in native
capabilities, so this should be a useful test.

I've got a third drive of the same type, but it's in a USB/FireWire
enclosure and I can't hdparm it directly.  

John

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2006-09-14 19:46 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-09-13 10:59 What's in linux-2.6-block.git Al Boldi
2006-09-13 10:59 ` Jens Axboe
2006-09-13 11:35   ` Al Boldi
2006-09-13 11:56     ` Jens Axboe
2006-09-13 17:52       ` Al Boldi
2006-09-13 14:23     ` John Stoffel
2006-09-13 17:52       ` Al Boldi
2006-09-14 19:46         ` John Stoffel
  -- strict thread matches above, loose matches on Subject: below --
2006-09-12 10:11 Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox