Chapter 8. IO Scheduler and block IO Tapset
This family of probe points is used to probe block IO layer and IO scheduler activities. It contains the following probe points:
Name
probe::ioscheduler.elv_next_request — Fires when a request is retrieved from the request queue
Synopsis
ioscheduler.elv_next_request
Values
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled
Name
probe::ioscheduler.elv_next_request.return — Fires when a request retrieval issues a return signal
Synopsis
ioscheduler.elv_next_request.return
Values
disk_major
-
Disk major number of the request
rq
-
Address of the request
name
-
Name of the probe point
disk_minor
-
Disk minor number of the request
rq_flags
-
Request flags
Name
probe::ioscheduler.elv_completed_request — Fires when a request is completed
Synopsis
ioscheduler.elv_completed_request
Values
disk_major
-
Disk major number of the request
rq
-
Address of the request
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled
disk_minor
-
Disk minor number of the request
rq_flags
-
Request flags
Name
probe::ioscheduler.elv_add_request.kp — kprobe based probe to indicate that a request was added to the request queue
Synopsis
ioscheduler.elv_add_request.kp
Values
disk_major
-
Disk major number of the request
rq
-
Address of the request
q
-
pointer to request queue
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled
disk_minor
-
Disk minor number of the request
rq_flags
-
Request flags
Name
probe::ioscheduler.elv_add_request.tp — tracepoint based probe to indicate a request is added to the request queue.
Synopsis
ioscheduler.elv_add_request.tp
Values
disk_major
-
Disk major no of request.
rq
-
Address of request.
q
-
Pointer to request queue.
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled.
disk_minor
-
Disk minor number of request.
rq_flags
-
Request flags.
Name
probe::ioscheduler.elv_add_request — probe to indicate request is added to the request queue.
Synopsis
ioscheduler.elv_add_request
Values
disk_major
-
Disk major no of request.
rq
-
Address of request.
q
-
Pointer to request queue.
elevator_name
-
The type of I/O elevator currently enabled.
disk_minor
-
Disk minor number of request.
rq_flags
-
Request flags.
Name
probe::ioscheduler_trace.elv_completed_request — Fires when a request is
Synopsis
ioscheduler_trace.elv_completed_request
Values
disk_major
-
Disk major no of request.
rq
-
Address of request.
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled.
disk_minor
-
Disk minor number of request.
rq_flags
-
Request flags.
Name
probe::ioscheduler_trace.elv_issue_request — Fires when a request is
Synopsis
ioscheduler_trace.elv_issue_request
Values
disk_major
-
Disk major no of request.
rq
-
Address of request.
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled.
disk_minor
-
Disk minor number of request.
rq_flags
-
Request flags.
Name
probe::ioscheduler_trace.elv_requeue_request — Fires when a request is
Synopsis
ioscheduler_trace.elv_requeue_request
Values
disk_major
-
Disk major no of request.
rq
-
Address of request.
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled.
disk_minor
-
Disk minor number of request.
rq_flags
-
Request flags.
Description
put back on the queue, when the hadware cannot accept more requests.
Name
probe::ioscheduler_trace.elv_abort_request — Fires when a request is aborted.
Synopsis
ioscheduler_trace.elv_abort_request
Values
disk_major
-
Disk major no of request.
rq
-
Address of request.
name
-
Name of the probe point
elevator_name
-
The type of I/O elevator currently enabled.
disk_minor
-
Disk minor number of request.
rq_flags
-
Request flags.
Name
probe::ioscheduler_trace.plug — Fires when a request queue is plugged;
Synopsis
ioscheduler_trace.plug
Values
name
-
Name of the probe point
rq_queue
-
request queue
Description
ie, requests in the queue cannot be serviced by block driver.
Name
probe::ioscheduler_trace.unplug_io — Fires when a request queue is unplugged;
Synopsis
ioscheduler_trace.unplug_io
Values
name
-
Name of the probe point
rq_queue
-
request queue
Description
Either, when number of pending requests in the queue exceeds threshold or, upon expiration of timer that was activated when queue was plugged.
Name
probe::ioscheduler_trace.unplug_timer — Fires when unplug timer associated
Synopsis
ioscheduler_trace.unplug_timer
Values
name
-
Name of the probe point
rq_queue
-
request queue
Description
with a request queue expires.
Name
probe::ioblock.request — Fires whenever making a generic block I/O request.
Description
name
- name of the probe point devname
- block device name ino
- i-node number of the mapped file sector
- beginning sector for the entire bio flags
- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported
rw
- binary trace for read/write request vcnt
- bio vector count which represents number of array element (page, offset, length) which make up this I/O request idx
- offset into the bio vector array phys_segments
- number of segments in this bio after physical address coalescing is performed hw_segments
- number of segments after physical and DMA remapping hardware coalescing is performed size
- total size in bytes bdev
- target block device bdev_contains
- points to the device object which contains the partition (when bio structure represents a partition) p_start_sect
- points to the start sector of the partition structure of the device
Context
The process makes block I/O request
Name
probe::ioblock.end — Fires whenever a block I/O transfer is complete.
Description
name
- name of the probe point devname
- block device name ino
- i-node number of the mapped file bytes_done
- number of bytes transferred sector
- beginning sector for the entire bio flags
- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported error
- 0 on success rw
- binary trace for read/write request vcnt
- bio vector count which represents number of array element (page, offset, length) which makes up this I/O request idx
- offset into the bio vector array phys_segments
- number of segments in this bio after physical address coalescing is performed. hw_segments
- number of segments after physical and DMA remapping hardware coalescing is performed size
- total size in bytes
Context
The process signals the transfer is done.
Name
probe::ioblock_trace.bounce — Fires whenever a buffer bounce is needed for at least one page of a block IO request.
Synopsis
ioblock_trace.bounce
Description
name
- name of the probe point q
- request queue on which this bio was queued. devname
- device for which a buffer bounce was needed. ino
- i-node number of the mapped file bytes_done
- number of bytes transferred sector
- beginning sector for the entire bio flags
- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported rw
- binary trace for read/write request vcnt
- bio vector count which represents number of array element (page, offset, length) which makes up this I/O request idx
- offset into the bio vector array phys_segments
- number of segments in this bio after physical address coalescing is performed. size
- total size in bytes bdev
- target block device bdev_contains
- points to the device object which contains the partition (when bio structure represents a partition) p_start_sect
- points to the start sector of the partition structure of the device
Context
The process creating a block IO request.
Name
probe::ioblock_trace.request — Fires just as a generic block I/O request is created for a bio.
Synopsis
ioblock_trace.request
Description
name
- name of the probe point q
- request queue on which this bio was queued. devname
- block device name ino
- i-node number of the mapped file bytes_done
- number of bytes transferred sector
- beginning sector for the entire bio flags
- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported
rw
- binary trace for read/write request vcnt
- bio vector count which represents number of array element (page, offset, length) which make up this I/O request idx
- offset into the bio vector array phys_segments
- number of segments in this bio after physical address coalescing is performed. size
- total size in bytes bdev
- target block device bdev_contains
- points to the device object which contains the partition (when bio structure represents a partition) p_start_sect
- points to the start sector of the partition structure of the device
Context
The process makes block I/O request
Name
probe::ioblock_trace.end — Fires whenever a block I/O transfer is complete.
Synopsis
ioblock_trace.end
Description
name
- name of the probe point q
- request queue on which this bio was queued. devname
- block device name ino
- i-node number of the mapped file bytes_done
- number of bytes transferred sector
- beginning sector for the entire bio flags
- see below BIO_UPTODATE 0 ok after I/O completion BIO_RW_BLOCK 1 RW_AHEAD set, and read/write would block BIO_EOF 2 out-out-bounds error BIO_SEG_VALID 3 nr_hw_seg valid BIO_CLONED 4 doesn't own data BIO_BOUNCED 5 bio is a bounce bio BIO_USER_MAPPED 6 contains user pages BIO_EOPNOTSUPP 7 not supported
rw
- binary trace for read/write request vcnt
- bio vector count which represents number of array element (page, offset, length) which makes up this I/O request idx
- offset into the bio vector array phys_segments
- number of segments in this bio after physical address coalescing is performed. size
- total size in bytes bdev
- target block device bdev_contains
- points to the device object which contains the partition (when bio structure represents a partition) p_start_sect
- points to the start sector of the partition structure of the device
Context
The process signals the transfer is done.