Re: QoS for iSCSI target?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2016-04-04 at 17:01 -0600, Chris Friesen wrote:
> On 04/04/2016 04:29 PM, Nicholas A. Bellinger wrote:
> > On Mon, 2016-04-04 at 09:20 -0600, Chris Friesen wrote:
> >> On 04/02/2016 07:15 PM, Nicholas A. Bellinger wrote:
> >>> On Fri, 2016-04-01 at 12:35 -0600, Chris Friesen wrote:
> >>
> >>>>>> On a slightly different note, is there any way to throttle or limit the overall
> >>>>>> bandwidth consumed by the iSCSI target in the kernel?  I'd like to ensure that
> >>>>>> the iSCSI traffic doesn't completely swamp the host accesses to the same block
> >>>>>> device.
> >>>>>>
> >>>>>> I suppose I could do networking-based traffic shaping, but are there any
> >>>>>> controls in the block IO subsystem?
> >>>>>>
> >>>>>
> >>>>> On a individual block_device backend basis, block cgroups is the
> >>>>> preferred method for doing this.
> >>>>>
> >>>>> Note that any rate limiting imposed by block cgroups is subject to the
> >>>>> current se_node_acl->queue_depth enforced across all LUNs within a given
> >>>>> iscsi session.
> >>>>
> >>>>
> >>>> How would I use cgroups with the kernel iSCSI target?  Is there a set of kernel
> >>>> threads dedicated to the iSCSI target that I can assign to a particular group?
> >>>>
> >>>
> >>> block cgroups can set I/O throttling (bandwidth + IOPs) limits for any
> >>> normal struct block_device.
> >>>
> >>> These values are configured via blkio.throttle.* resource class, and the
> >>> limits are imposed independently of the block_device's association with
> >>> target_core_mod backend driver export.  Namely:
> >>>
> >>>       blkio.throttle.write_iops_device
> >>>       blkio.throttle.read_iops_device
> >>>       blkio.throttle.write_bps_device
> >>>       blkio.throttle.read_bdp_device
> >>>
> >>> Some examples using these values, plus more blkio.* info is here:
> >>> http://events.linuxfoundation.org/sites/events/files/slides/cgroups_0.pdf.
> >>>
> >>
> >> I understand how to set up the cgroups, but don't I need to ensure that the IO
> >> operations happen in the context of a particular cgroup?  If so, how do I ensure
> >> that the in-kernel iSCSI target traffic happens in the context of the specified
> >> group?  Are there a set of kernel threads dedicated to processing iSCSI requests?
> >>
> >
> > block cgroups does I/O ratelimiting at struct block_device level.
> >
> > Eg: The process cgroup (which AFAICT is what your thinking about) is
> > separate from block cgroups, and doesn't need to be explicitly enabled
> > in order for block cgroup to function.
> >
> 
> I'm still confused.
> 
> I'm not trying to globally throttle IO on a particular block device.  I'm trying 
> to control how much IO the iSCSI target in the kernel is allowed to drive on a 
> particular block device.
> 
> The goal is to ensure that the iSCSI target does not consume all of the 
> available bandwidth for a particular block device.  I want to ensure that some 
> of the bandwidth for that device is available to other processes on the host 
> (for management purposes) rather than being consumed by a greedy iSCSI initiator.
> 

AFAIK, different traffic classes for a single block device is not
supported by block cgroups.

Also given target_core_iblock claims a given block_device for exclusive
access, you can't actually use the same block device for a mounted
filesystem, LVM, MD, etc, once it's been registered for target usage.

> In an ideal world I would like a set of rules that say things like:
> 1) if there is contention, ensure that the host is guaranteed X percent of the 
> available /dev/sdb IOPS
> 2) if there is contention, do not allow the iSCSI target traffic to consume more 
> than Y percent of /dev/sdb's write traffic
> 

Yeah, that doesn't exist in standlone block groups.

You could probably use network cgroups to limit bandwidth at the socket
level for iscsi_target_mod, but that's going to be across all LUNs in a
session, and not at individual LUN level.

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux