Bug 1328446
| Summary: | [RHEL-6] gluster-swift [PERF]: Account and container listings fetch metadata from FS even when it's not needed | ||
|---|---|---|---|
| Product: | [Red Hat Storage] Red Hat Gluster Storage | Reporter: | Prashanth Pai <ppai> |
| Component: | gluster-swift | Assignee: | Prashanth Pai <ppai> |
| Status: | CLOSED ERRATA | QA Contact: | surabhi <sbhaloth> |
| Severity: | medium | Docs Contact: | |
| Priority: | high | ||
| Version: | rhgs-3.1 | CC: | asrivast, nlevinki, rcyriac, rhinduja, rhs-bugs, sbhaloth, thiago |
| Target Milestone: | --- | Keywords: | ZStream |
| Target Release: | RHGS 3.1.3 | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
| Fixed In Version: | swiftonfile-1.13.1-8 | Doc Type: | Bug Fix |
| Doc Text: | Story Points: | --- | |
| Clone Of: | 1312810 | Environment: | |
| Last Closed: | 2016-06-23 05:36:31 UTC | Type: | Bug |
| 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: | 1312810 | ||
| Bug Blocks: | 1299184 | ||
|
Comment 2
Prashanth Pai
2016-04-25 09:21:50 UTC
Downstream changes merged: https://code.engineering.redhat.com/gerrit/#/q/topic:bug-1328446 Verified with latest swiftclient build, there are no getxattr calls to each and every object inside container or each and every container inside Account which was the case with previous swift versions.
just verified it via strace output.No extensive perf testing has been done.
ps aux | grep account
root 7701 0.0 0.0 103308 856 pts/1 S+ 13:11 0:00 grep account
root 32697 0.0 0.1 241024 15432 ? Ss Apr26 0:00 /usr/bin/python /usr/bin/swift-account-server /etc/swift/account-server.conf
root 32715 0.0 0.1 241500 13572 ? S Apr26 0:11 /usr/bin/python /usr/bin/swift-account-server /etc/swift/account-server.conf
lstat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/mnt/gluster-object/test/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/var/run/swift/db_file.db", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
stat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getxattr("/mnt/gluster-object/test", "user.swift.metadata", 0x0, 0) = 172
getxattr("/mnt/gluster-object/test", "user.swift.metadata", "{"X-Bytes-Used":[0,0],"X-Timestamp":["1461741553.16310",0],"X-Object-Count":[0,0],"X-Type":["Account",0],"X-PUT-Timestamp":["1461741553.16310",0],"X-Container-Count":[5,0]}", 172) = 172
stat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/mnt/gluster-object/test", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 9
getdents(9, /* 6 entries */, 32768) = 152
getdents(9, /* 0 entries */, 32768) = 0
close(9) = 0
stat("/mnt/gluster-object/test/c2", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c3", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
setxattr("/mnt/gluster-object/test", "user.swift.metadata", "{"X-Bytes-Used":[
lstat("/mnt/gluster-object/test/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
getxattr("/mnt/gluster-object/test/c1", "user.swift.metadata", 0x0, 0) = 148
getxattr("/mnt/gluster-object/test/c1", "user.swift.metadata", "{"X-Object-Count":[5,0],"X-Timestamp":["1462887054.74214",0],"X-Type":["container",0],"X-PUT-Timestamp":["1462887054.77291",0],"X-Bytes-Used":[0,0]}", 148) = 148
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat("/mnt/gluster-object/test/c1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/mnt/gluster-object/test/c1", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 8
getdents(8, /* 7 entries */, 32768) = 168
getdents(8, /* 0 entries */, 32768) = 0
close(8) = 0
stat("/mnt/gluster-object/test/c1/o1", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o2", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o3", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o4", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
stat("/mnt/gluster-object/test/c1/o5", {st_mode=S_IFREG|0755, st_size=11, ...}) = 0
gettimeofday({1462887445, 549926}, NULL) = 0
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2016:1246 |