CAM disk I/O starvation

Jerry Toung jrytoung at gmail.com
Thu Apr 5 15:55:39 UTC 2012


On Wed, Apr 4, 2012 at 8:22 PM, Alexander Leidinger <Alexander at leidinger.net
> wrote:

>
> This looks fair if all your disks are working at the same time (e.g.
> RAID only setup), but if you have a setup where you have multiple
> disks and only one is doing something, you limit the amount of tags
> which can be used. No idea what kind of performance impact this would
> have.
>
> I haven't seen any performance impact. da1, the one the used to stall
consistenly get over 600MB/s.


> What about the case where you have more disks than tags?
>
This part of the patch takes care of that scenario:

@@ -998,6 +1003,24 @@ xpt_add_periph(struct cam_periph *periph
        mtx_lock(&xsoftc.xpt_topo_lock);
        xsoftc.xpt_generation++;
+
+       if (device != NULL && device->sim->dev_count > 1 &&
+            (device->sim->max_dev_openings > device->sim->dev_count)) {
otherwise, we don't split the tags and the original behavior remains.


>
> I also noticed that you do a strncmp for "da". What about
> "ada" (available in 9 and 10), I would assume it suffers from the same
> problem.
>

I am running FreeBSD 8.1, no "ada". Me presenting a patch is just a way to
draw
attention on a problem and it improves things on my setup. There is
certainly a way to make it more general/inclusive.

Jerry


More information about the freebsd-hackers mailing list