Bug 1328446 - [RHEL-6] gluster-swift [PERF]: Account and container listings fetch metadata from FS even when it's not needed
Summary: [RHEL-6] gluster-swift [PERF]: Account and container listings fetch metadata ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Gluster Storage
Classification: Red Hat Storage
Component: gluster-swift
Version: rhgs-3.1
Hardware: All
OS: All
high
medium
Target Milestone: ---
: RHGS 3.1.3
Assignee: Prashanth Pai
QA Contact: surabhi
URL:
Whiteboard:
Depends On: 1312810
Blocks: 1299184
TreeView+ depends on / blocked
 
Reported: 2016-04-19 12:00 UTC by Prashanth Pai
Modified: 2016-06-23 05:36 UTC (History)
7 users (show)

Fixed In Version: swiftonfile-1.13.1-8
Doc Type: Bug Fix
Doc Text:
Clone Of: 1312810
Environment:
Last Closed: 2016-06-23 05:36:31 UTC
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2016:1246 0 normal SHIPPED_LIVE gluster-swift update for Red Hat Gluster Storage 3.1 update 3 2016-06-23 09:12:59 UTC

Comment 2 Prashanth Pai 2016-04-25 09:21:50 UTC
Changes posted here: https://code.engineering.redhat.com/gerrit/#/q/topic:bug-1328446

Comment 3 Prashanth Pai 2016-05-05 10:00:14 UTC
Downstream changes merged: https://code.engineering.redhat.com/gerrit/#/q/topic:bug-1328446

Comment 4 surabhi 2016-05-10 13:39:40 UTC
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

Comment 6 errata-xmlrpc 2016-06-23 05:36:31 UTC
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


Note You need to log in before you can comment on or make changes to this bug.