Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vdev queue stats #16200

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

vdev queue stats #16200

wants to merge 5 commits into from

Commits on May 21, 2024

  1. linux/kstat: allow multi-level module names

    Module names are mapped directly to directory names in procfs, but
    nothing is done to create the intermediate directories, or remove them.
    This makes it impossible to sensibly present kstats about sub-objects.
    
    This commit loops through '/'-separated names in the full module name,
    creates a separate module for each, and hooks them up with a parent
    pointer and child counter, and then unrolls this on the other side when
    deleting a module.
    
    Sponsored-by: Klara, Inc.
    Sponsored-by: Syneto
    Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
    robn committed May 21, 2024
    Configuration menu
    Copy the full SHA
    0dd0a2d View commit details
    Browse the repository at this point in the history
  2. linux/kstat: replace existing kstat if name is reused

    Previously, if a kstat proc name already existed, the old one would be
    kept. This makes it so the old one is discarded and the new one kept.
    
    Arguably, a collision like this shouldn't ever happen, but during
    import multiple vdev_t (and so vdev_queue_t, and so vdev_queue stats)
    can exist at the same time for the same guid. There's no real way to
    tell which is which without substantial refactoring in the import and
    vdev init codepaths, whch is probably worthwhile but not for today.
    
    Sponsored-by: Klara, Inc.
    Sponsored-by: Syneto
    Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
    robn committed May 21, 2024
    Configuration menu
    Copy the full SHA
    e31ed02 View commit details
    Browse the repository at this point in the history
  3. freebsd/kstat: allow multi-level module names

    This extends the existing special-case for zfs/poolname to split and
    create any number of intermediate sysctl names, so that multi-level
    module names are possible.
    
    Sponsored-by: Klara, Inc.
    Sponsored-by: Syneto
    Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
    robn committed May 21, 2024
    Configuration menu
    Copy the full SHA
    2c251e8 View commit details
    Browse the repository at this point in the history
  4. freebsd/kstat: replace existing kstat if name is reused

    Normally, when trying to add a sysctl name that already exists, the
    kernel rejects it with a warning. This changes the code to search for a
    sysctl with the wanted name in same root. If it exists, it is destroyed,
    allowing the new one to go in.
    
    Arguably, a collision like this shouldn't ever happen, but during
    import multiple vdev_t (and so vdev_queue_t, and so vdev_queue stats)
    can exist at the same time for the same guid. There's no real way to
    tell which is which without substantial refactoring in the import and
    vdev init codepaths, whch is probably worthwhile but not for today.
    
    Sponsored-by: Klara, Inc.
    Sponsored-by: Syneto
    Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
    robn committed May 21, 2024
    Configuration menu
    Copy the full SHA
    b827625 View commit details
    Browse the repository at this point in the history
  5. vdev_queue: per-vdev stats

    Adding a bunch of gauges and counters to show in-flight and total IOs,
    with per-class breakdowns, and some aggregation counters.
    
    Sponsored-by: Klara, Inc.
    Sponsored-by: Syneto
    Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
    robn committed May 21, 2024
    Configuration menu
    Copy the full SHA
    0a9a614 View commit details
    Browse the repository at this point in the history