Bug 294721

Summary: Provide lvmsar-style I/O statistics in lvm2
Product: Red Hat Enterprise Linux 6 Reporter: Scott Crenshaw <crenshaw>
Component: lvm2Assignee: Bryn M. Reeves <bmr>
Status: CLOSED WONTFIX QA Contact: Corey Marthaler <cmarthal>
Severity: medium Docs Contact:
Priority: high    
Version: 6.1CC: agk, coughlan, djansa, dwysocha, heinzm, jbrassow, joe.thornber, nperic, prajnoha, prockai, riek, sghosh, tao, zkabelac
Target Milestone: betaKeywords: FutureFeature
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of:
: 586189 611818 1189089 (view as bug list) Environment:
Last Closed: 2015-10-12 15:41:45 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 249706    
Bug Blocks: 611818, 697866, 756082, 1056252    
Attachments:
Description Flags
Old kernel patch none

Description Rob Kenna 2007-09-18 13:58:53 UTC
+++ This bug was initially created as a clone of Bug #249706 +++

-- Additional comment from tao on 2007-07-26 11:28 EST --
Description of problem:
lvmsar is available in RHEL3.  It is still not available in RHEL 4 in the latest
update.  It is also not available in RHEL 5.
How reproducible:
Always
Steps to Reproduce:
[root ~]# lvmsar
 Command not implemented yet. 

This event sent from IssueTracker by tdunnon  [SEG - Feature Request]
 issue 125402

-- Additional comment from jiawang on 2007-08-08 13:51 EST --
Well, there are dm-iostats kernel module ready to use right now, 
but it is not that user friendly. 
For example, in order to get iostats for one logical volume, you 
 need to do the following 5 steps.
1).Get the dm-ioststs patch, compile and "insmod dm-iostats".
2).Get the table of the logical volume by "dmsetup table lvname".
3).Create iostats device "dmsetup create iostats" with the table you get at step 2.
4).mkfs and mount the iostats and do IO to iostats device.
5).Get the stats by "dmsetup status iostats",
   which will show the the following statistics:
   1. Displays the number of read and write operations.
   2. Displays the number of failed read and write operations.
   3. Displays average latency for read and write operations.

My project with iostats right now is to optimize dm-iostats interface for 
 lvm, and try to make user's task as easy as possible. 
For example:
"lvchange -ay iostats vgname/lvname"
will activate the iostats node.

"lvdisplay/pvdisplay  vgname/lvname"
 will show statistics of the logical volume:
Hopefully I could get this out in these weeks.

Not sure whether this suit your needs, let me know if you need
further information.

Comment 13 Alasdair Kergon 2010-11-22 21:13:42 UTC
Created attachment 462144 [details]
Old kernel patch

Comment 18 Jonathan Earl Brassow 2010-11-30 15:01:10 UTC
*** Bug 586189 has been marked as a duplicate of this bug. ***

Comment 22 Peter Rajnoha 2011-12-16 12:12:59 UTC
*** Bug 611818 has been marked as a duplicate of this bug. ***

Comment 23 Tom Lavigne 2012-09-07 15:17:42 UTC
This request was evaluated by Red Hat Product Management for 
inclusion in the current release of Red Hat Enterprise Linux.
Since we are unable to provide this feature at this time,  
it has been proposed for the next release of 
Red Hat Enterprise Linux.

Comment 28 Bryn M. Reeves 2014-12-17 12:17:01 UTC
Simple python prototype here that provides iostat functionality for logical volumes (including breaking down by segment or arbitrarily sized areas):

http://git.engineering.redhat.com/git/users/breeves/lvmstat.git/

The intent is to add iostats support to libdm/dmsetup first and to then extend the LVM2 reporter to also include these fields (and allow us to build additional tools like lvmsar/lvmsadc and PCP integration on top of that).

Comment 29 Bryn M. Reeves 2014-12-18 17:39:02 UTC
Looking at the LVM1 implementations of lvmsar and lvmsadc they are quite simple; lvmsadc records a timestamp then for each LV a summary line with the name and allocated extent count followed by a table (in LE order) of per-LE read/write IO counters. As with sysstat sadc this is expected to be run from a cron job to build up a series of periodic samples.

The lvmsar command then takes this raw data and formats it into human-readable output.

I'm not sure it makes sense to provide direct equivalents of this in LVM2; the dm-statistics support is considerably more flexible and complete (richer set of event counters and greater control for specifying regions of a device to be monitored).

Since lvmsadc/lvmsar have not been available since RHEL3 it seems unlikely that anyone is relying on the specific output formats they provide.

Anyway: the initial plan is to extend device-mapper reporting to be able to report stats values and to then make use of this from the LVM2 reporting tools. Once we have something working here we can consider whether other compatibility formats (beyond iostat) are worthwhile.