[Gluster-devel] readdir performance

Emmanuel Dreyfus manu at netbsd.org
Wed Aug 19 01:16:50 UTC 2020


Hello

I need hints about where to look at for poor readdir performance
on NetBSD.

The volume is 4x2 distributed/replicated (gluster volume info at the end of
this message). Sometimes, the first listing of a large directroy is oddly 
long. For instance, ls on a directoty containing 96 entries took 39 seconds
to complete. A second listing gets a decent time of 0.7s.

profiling data included below shows a large time is spent in READDIRP
for brick baril:/export/wd0e.

Kernel trace shows that on the slow brick, all items in the listed
directory get the following treatment:
stat()
lgetxattr(trusted.glusterfs.mdata) => does not exist
llistxattr()

That does not happen on other bricks, which just call get directory
content, without further inspection.

Any hint? I suspect it considers it has to self-heal something, but
how is this decided?

# gluster volume info
Volume Name: gfs
Type: Distributed-Replicate
Volume ID: 45f4dc1b-344f-41a7-be82-c02e57a4b555
Status: Started
Snapshot Count: 0
Number of Bricks: 4 x 2 = 8
Transport-type: tcp
Bricks:
Brick1: bidon:/export/wd0e_tmp
Brick2: baril:/export/wd0e
Brick3: bidon:/export/WD-WX11D741AXCA-v2
Brick4: baril:/export/gfs1a
Brick5: bidon:/export/wd2e
Brick6: baril:/export/wd2e
Brick7: bidon:/export/wd3e_tmp
Brick8: baril:/export/wd3e_tmp
Options Reconfigured:
performance.cache-size: 128MB
performance.cache-max-file-size: 0
storage.gfid2path: off
cluster.self-heal-daemon: enable
nfs.disable: true
diagnostics.brick-log-level: INFO
performance.parallel-readdir: on
cluster.readdir-optimize: on

# gluster volume profile gfs info
Brick: bidon:/export/wd3e_tmp
-----------------------------
Cumulative Stats:
   Block Size:                512b+                2048b+                8192b+ 
 No. of Reads:                    1                     0                    16 
No. of Writes:                    0                     3                     1 
 
   Block Size:              16384b+               32768b+               65536b+ 
 No. of Reads:                    3                    18                     0 
No. of Writes:                    1                    14                     2 
 
   Block Size:             131072b+ 
 No. of Reads:                    0 
No. of Writes:                   43 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            148      FORGET
      0.00       0.00 us       0.00 us       0.00 us            148     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66884  RELEASEDIR
      1.59      52.41 us      52.41 us      52.41 us              1    GETXATTR
      3.96      65.33 us      41.03 us      89.64 us              2      STATFS
      4.55      74.97 us      45.48 us     104.45 us              2     OPENDIR
     10.16     335.15 us     335.15 us     335.15 us              1    READDIRP
     79.74     219.11 us      95.56 us     427.04 us             12      LOOKUP
 
    Duration: 138813 seconds
   Data Read: 795226 bytes
Data Written: 6319409 bytes
 
Interval 0 Stats:
   Block Size:                512b+                2048b+                8192b+ 
 No. of Reads:                    1                     0                    16 
No. of Writes:                    0                     3                     1 
 
   Block Size:              16384b+               32768b+               65536b+ 
 No. of Reads:                    3                    18                     0 
No. of Writes:                    1                    14                     2 
 
   Block Size:             131072b+ 
 No. of Reads:                    0 
No. of Writes:                   43 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            148      FORGET
      0.00       0.00 us       0.00 us       0.00 us            148     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66884  RELEASEDIR
      1.59      52.41 us      52.41 us      52.41 us              1    GETXATTR
      3.96      65.33 us      41.03 us      89.64 us              2      STATFS
      4.55      74.97 us      45.48 us     104.45 us              2     OPENDIR
     10.16     335.15 us     335.15 us     335.15 us              1    READDIRP
     79.74     219.11 us      95.56 us     427.04 us             12      LOOKUP
 
    Duration: 138813 seconds
   Data Read: 795226 bytes
Data Written: 6319409 bytes
 
Brick: bidon:/export/wd2e
-------------------------
Cumulative Stats:
   Block Size:               8192b+               16384b+               32768b+ 
 No. of Reads:                    5                     1                     6 
No. of Writes:                    0                     0                     0 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            134      FORGET
      0.00       0.00 us       0.00 us       0.00 us            135     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          74499  RELEASEDIR
      0.35      71.17 us      71.17 us      71.17 us              1    GETXATTR
      0.58      58.37 us      53.90 us      62.84 us              2     OPENDIR
      0.60      60.38 us      41.31 us      79.44 us              2      STATFS
      1.89     379.35 us     379.35 us     379.35 us              1    READDIRP
     96.58    1763.96 us     141.55 us   16854.47 us             11      LOOKUP
 
    Duration: 138814 seconds
   Data Read: 262144 bytes
Data Written: 0 bytes
 
Interval 0 Stats:
   Block Size:               8192b+               16384b+               32768b+ 
 No. of Reads:                    5                     1                     6 
No. of Writes:                    0                     0                     0 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            134      FORGET
      0.00       0.00 us       0.00 us       0.00 us            135     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          74499  RELEASEDIR
      0.35      71.17 us      71.17 us      71.17 us              1    GETXATTR
      0.58      58.37 us      53.90 us      62.84 us              2     OPENDIR
      0.60      60.38 us      41.31 us      79.44 us              2      STATFS
      1.89     379.35 us     379.35 us     379.35 us              1    READDIRP
     96.58    1763.96 us     141.55 us   16854.47 us             11      LOOKUP
 
    Duration: 138814 seconds
   Data Read: 262144 bytes
Data Written: 0 bytes
 
Brick: bidon:/export/wd0e_tmp
-----------------------------
Cumulative Stats:
   Block Size:               8192b+               16384b+               32768b+ 
 No. of Reads:                    5                     1                     6 
No. of Writes:                    0                     0                     0 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us             90      FORGET
      0.00       0.00 us       0.00 us       0.00 us            124     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          17347  RELEASEDIR
      2.82      99.39 us      99.39 us      99.39 us              1    GETXATTR
      4.29      75.51 us      73.75 us      77.28 us              2     OPENDIR
      5.59      98.52 us      43.81 us     153.22 us              2      STATFS
     10.54     371.27 us     371.27 us     371.27 us              1    READDIRP
     76.77     225.44 us     122.50 us     684.71 us             12      LOOKUP
 
    Duration: 138816 seconds
   Data Read: 262144 bytes
Data Written: 0 bytes
 
Interval 0 Stats:
   Block Size:               8192b+               16384b+               32768b+ 
 No. of Reads:                    5                     1                     6 
No. of Writes:                    0                     0                     0 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us             90      FORGET
      0.00       0.00 us       0.00 us       0.00 us            124     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          17347  RELEASEDIR
      2.82      99.39 us      99.39 us      99.39 us              1    GETXATTR
      4.29      75.51 us      73.75 us      77.28 us              2     OPENDIR
      5.59      98.52 us      43.81 us     153.22 us              2      STATFS
     10.54     371.27 us     371.27 us     371.27 us              1    READDIRP
     76.77     225.44 us     122.50 us     684.71 us             12      LOOKUP
 
    Duration: 138816 seconds
   Data Read: 262144 bytes
Data Written: 0 bytes
 
Brick: bidon:/export/WD-WX11D741AXCA-v2
---------------------------------------
Cumulative Stats:
   Block Size:                256b+                2048b+                8192b+ 
 No. of Reads:                    1                     4                  1504 
No. of Writes:                    0                197941               2627877 
 
   Block Size:              16384b+               32768b+               65536b+ 
 No. of Reads:                   15                  6705                     0 
No. of Writes:                86163                     2                     2 
 
   Block Size:             131072b+ 
 No. of Reads:                64860 
No. of Writes:                    0 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            182      FORGET
      0.00       0.00 us       0.00 us       0.00 us            219     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66888  RELEASEDIR
      0.04      58.40 us      51.64 us      65.16 us              2     OPENDIR
      0.08     246.24 us     246.24 us     246.24 us              1    GETXATTR
      0.32     979.61 us     979.61 us     979.61 us              1      UNLINK
      1.13     251.23 us     123.88 us     485.58 us             14      LOOKUP
      2.46    1906.00 us      15.69 us    7573.23 us              4     ENTRYLK
      6.20    9608.96 us      41.02 us   19176.90 us              2      STATFS
     16.05   49754.55 us   49754.55 us   49754.55 us              1      CREATE
     73.72  228492.97 us  228492.97 us  228492.97 us              1    READDIRP
 
    Duration: 138815 seconds
   Data Read: 8733744996 bytes
Data Written: 28674746937 bytes
 
Interval 0 Stats:
   Block Size:                256b+                2048b+                8192b+ 
 No. of Reads:                    1                     4                  1504 
No. of Writes:                    0                197941               2627877 
 
   Block Size:              16384b+               32768b+               65536b+ 
 No. of Reads:                   15                  6705                     0 
No. of Writes:                86163                     2                     2 
 
   Block Size:             131072b+ 
 No. of Reads:                64860 
No. of Writes:                    0 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            182      FORGET
      0.00       0.00 us       0.00 us       0.00 us            219     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66888  RELEASEDIR
      0.04      58.40 us      51.64 us      65.16 us              2     OPENDIR
      0.08     246.24 us     246.24 us     246.24 us              1    GETXATTR
      0.32     979.61 us     979.61 us     979.61 us              1      UNLINK
      1.13     251.23 us     123.88 us     485.58 us             14      LOOKUP
      2.46    1906.00 us      15.69 us    7573.23 us              4     ENTRYLK
      6.20    9608.96 us      41.02 us   19176.90 us              2      STATFS
     16.05   49754.55 us   49754.55 us   49754.55 us              1      CREATE
     73.72  228492.97 us  228492.97 us  228492.97 us              1    READDIRP
 
    Duration: 138815 seconds
   Data Read: 8733744996 bytes
Data Written: 28674746937 bytes
 
Brick: baril:/export/wd3e_tmp
-----------------------------
Cumulative Stats:
   Block Size:               2048b+                8192b+               16384b+ 
 No. of Reads:                    0                    10                     2 
No. of Writes:                    3                     1                     1 
 
   Block Size:              32768b+               65536b+              131072b+ 
 No. of Reads:                   20                     0                     0 
No. of Writes:                   14                     2                    43 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            148      FORGET
      0.00       0.00 us       0.00 us       0.00 us            148     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66884  RELEASEDIR
      0.03      46.99 us      46.99 us      46.99 us              1    GETXATTR
      0.04      37.97 us      37.83 us      38.12 us              2      STATFS
      0.05      45.43 us      44.62 us      46.24 us              2     OPENDIR
     32.77   57479.55 us   57479.55 us   57479.55 us              1    READDIRP
     67.11    9810.81 us     122.08 us   38620.88 us             12      LOOKUP
 
    Duration: 138821 seconds
   Data Read: 786432 bytes
Data Written: 6319409 bytes
 
Interval 0 Stats:
   Block Size:               2048b+                8192b+               16384b+ 
 No. of Reads:                    0                    10                     2 
No. of Writes:                    3                     1                     1 
 
   Block Size:              32768b+               65536b+              131072b+ 
 No. of Reads:                   20                     0                     0 
No. of Writes:                   14                     2                    43 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            148      FORGET
      0.00       0.00 us       0.00 us       0.00 us            148     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66884  RELEASEDIR
      0.03      46.99 us      46.99 us      46.99 us              1    GETXATTR
      0.04      37.97 us      37.83 us      38.12 us              2      STATFS
      0.05      45.43 us      44.62 us      46.24 us              2     OPENDIR
     32.77   57479.55 us   57479.55 us   57479.55 us              1    READDIRP
     67.11    9810.81 us     122.08 us   38620.88 us             12      LOOKUP
 
    Duration: 138821 seconds
   Data Read: 786432 bytes
Data Written: 6319409 bytes
 
Brick: baril:/export/gfs1a
--------------------------
Cumulative Stats:
   Block Size:               2048b+                8192b+               16384b+ 
 No. of Reads:                    0                    20                     7 
No. of Writes:               197941               2627878                 86163 
 
   Block Size:              32768b+               65536b+              131072b+ 
 No. of Reads:                   30                     0                     0 
No. of Writes:                    2                     2                 64860 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            182      FORGET
      0.00       0.00 us       0.00 us       0.00 us            219     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66885  RELEASEDIR
      0.06      50.84 us      50.84 us      50.84 us              1    GETXATTR
      0.09      18.55 us      16.41 us      20.18 us              4     ENTRYLK
      0.11      48.97 us      44.84 us      53.10 us              2     OPENDIR
      0.12      51.16 us      37.81 us      64.51 us              2      STATFS
      1.78    1518.16 us    1518.16 us    1518.16 us              1      UNLINK
      3.50     213.42 us     118.62 us     342.69 us             14      LOOKUP
     46.17   39364.15 us   39364.15 us   39364.15 us              1      CREATE
     48.16   41060.82 us   41060.82 us   41060.82 us              1    READDIRP
 
    Duration: 138823 seconds
   Data Read: 1326977 bytes
Data Written: 37176085049 bytes
 
Interval 0 Stats:
   Block Size:               2048b+                8192b+               16384b+ 
 No. of Reads:                    0                    20                     7 
No. of Writes:               197941               2627878                 86163 
 
   Block Size:              32768b+               65536b+              131072b+ 
 No. of Reads:                   30                     0                     0 
No. of Writes:                    2                     2                 64860 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            182      FORGET
      0.00       0.00 us       0.00 us       0.00 us            219     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66885  RELEASEDIR
      0.06      50.84 us      50.84 us      50.84 us              1    GETXATTR
      0.09      18.55 us      16.41 us      20.18 us              4     ENTRYLK
      0.11      48.97 us      44.84 us      53.10 us              2     OPENDIR
      0.12      51.16 us      37.81 us      64.51 us              2      STATFS
      1.78    1518.16 us    1518.16 us    1518.16 us              1      UNLINK
      3.50     213.42 us     118.62 us     342.69 us             14      LOOKUP
     46.17   39364.15 us   39364.15 us   39364.15 us              1      CREATE
     48.16   41060.82 us   41060.82 us   41060.82 us              1    READDIRP
 
    Duration: 138823 seconds
   Data Read: 1326977 bytes
Data Written: 37176085049 bytes
 
Brick: baril:/export/wd0e
-------------------------
Cumulative Stats:
   Block Size:               4096b+                8192b+               16384b+ 
 No. of Reads:                    9                     5                     2 
No. of Writes:                    0                     0                     0 
 
   Block Size:              32768b+ 
 No. of Reads:                 4463 
No. of Writes:                    0 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            127      FORGET
      0.00       0.00 us       0.00 us       0.00 us            127     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66931  RELEASEDIR
      0.00      61.70 us      61.70 us      61.70 us              1    GETXATTR
      0.00      44.23 us      40.46 us      47.99 us              2      STATFS
      0.00      66.94 us      53.19 us      80.69 us              2     OPENDIR
      0.01     214.48 us     132.89 us     350.46 us             12      LOOKUP
     99.99 19333949.34 us  808361.68 us 37859537.00 us              2    READDIRP
 
    Duration: 138824 seconds
   Data Read: 146374656 bytes
Data Written: 0 bytes
 
Interval 0 Stats:
   Block Size:               4096b+                8192b+               16384b+ 
 No. of Reads:                    9                     5                     2 
No. of Writes:                    0                     0                     0 
 
   Block Size:              32768b+ 
 No. of Reads:                 4463 
No. of Writes:                    0 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            127      FORGET
      0.00       0.00 us       0.00 us       0.00 us            127     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          66931  RELEASEDIR
      0.00      61.70 us      61.70 us      61.70 us              1    GETXATTR
      0.00      44.23 us      40.46 us      47.99 us              2      STATFS
      0.00      66.94 us      53.19 us      80.69 us              2     OPENDIR
      0.01     214.48 us     132.89 us     350.46 us             12      LOOKUP
     99.99 19333949.34 us  808361.68 us 37859537.00 us              2    READDIRP
 
    Duration: 138824 seconds
   Data Read: 146374656 bytes
Data Written: 0 bytes
 
Brick: baril:/export/wd2e
-------------------------
Cumulative Stats:
   Block Size:               8192b+               16384b+               32768b+ 
 No. of Reads:                   10                     2                    20 
No. of Writes:                    0                     0                     0 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            134      FORGET
      0.00       0.00 us       0.00 us       0.00 us            135     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          67991  RELEASEDIR
      0.07      52.79 us      52.79 us      52.79 us              1    GETXATTR
      0.10      39.25 us      38.38 us      40.13 us              2      STATFS
      0.13      51.45 us      45.36 us      57.55 us              2     OPENDIR
     20.28    1406.18 us     133.88 us   13190.43 us             11      LOOKUP
     79.41   60571.65 us   60571.65 us   60571.65 us              1    READDIRP
 
    Duration: 138822 seconds
   Data Read: 786432 bytes
Data Written: 0 bytes
 
Interval 0 Stats:
   Block Size:               8192b+               16384b+               32768b+ 
 No. of Reads:                   10                     2                    20 
No. of Writes:                    0                     0                     0 
 
 %-latency   Avg-latency   Min-Latency   Max-Latency   No. of calls         Fop
 ---------   -----------   -----------   -----------   ------------        ----
      0.00       0.00 us       0.00 us       0.00 us            134      FORGET
      0.00       0.00 us       0.00 us       0.00 us            135     RELEASE
      0.00       0.00 us       0.00 us       0.00 us          67991  RELEASEDIR
      0.07      52.79 us      52.79 us      52.79 us              1    GETXATTR
      0.10      39.25 us      38.38 us      40.13 us              2      STATFS
      0.13      51.45 us      45.36 us      57.55 us              2     OPENDIR
     20.28    1406.18 us     133.88 us   13190.43 us             11      LOOKUP
     79.41   60571.65 us   60571.65 us   60571.65 us              1    READDIRP
 
    Duration: 138822 seconds
   Data Read: 786432 bytes
Data Written: 0 bytes




-- 
Emmanuel Dreyfus
manu at netbsd.org


More information about the Gluster-devel mailing list