Project

General

Profile

Actions

Bug #12638

closed

build_incremental() could take 40678 ms to finish

Added by Kefu Chai over 8 years ago. Updated over 8 years ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
% Done:

0%

Source:
other
Tags:
Backport:
firefly,hammer
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

ceph version 0.80.7 (6c0127fcb58008793d3c8b62d925bc91963672a3)

it is reported that a monitor with over 800 osdmap subscribers will take 90 seconds to return from update_from_paxos(). the majority of time is spend on build_incremental(). so we'd better load the fullmap/incremental map in a jiffy.

015-08-06 01:00:58.294782 7fd57c264700 10 mon-018@2(peon).osd e528892 check_sub 0x1c4b1280 next 528892 (onetime)
2015-08-06 01:00:58.294790 7fd57c264700  5 mon-018@2(peon).osd e528892 send_incremental [528892..528892] to client.81113180 10.202.48.22:0/1302109
2015-08-06 01:00:58.294815 7fd57c264700 10 mon-018@2(peon).osd e528892 build_incremental [528892..528892]
2015-08-06 01:00:58.335493 7fd57c264700 10 mon-018@2(peon).osd e528892 check_sub 0x72c20c0 next 528892 (onetime)
2015-08-06 01:00:58.335508 7fd57c264700  5 mon-018@2(peon).osd e528892 send_incremental [528892..528892] to client.81122956 10.202.48.29:0/1040905
2015-08-06 01:00:58.335512 7fd57c264700 10 mon-018@2(peon).osd e528892 build_incremental [528892..528892]

Related issues 2 (0 open2 closed)

Copied to Ceph - Backport #12816: build_incremental() could take 40678 ms to finishResolvedKefu Chai08/06/2015Actions
Copied to Ceph - Backport #12817: build_incremental() could take 40678 ms to finishResolvedKefu Chai08/06/2015Actions
Actions #1

Updated by Kefu Chai over 8 years ago

  • Assignee set to Kefu Chai
Actions #2

Updated by Kefu Chai over 8 years ago

2015-08-06 01:00:58.294782 7fd57c264700 10 mon-018@2(peon).osd e528892 check_sub 0x1c4b1280 next 528892 (onetime)
2015-08-06 01:00:58.294790 7fd57c264700  5 mon-018@2(peon).osd e528892 send_incremental [528892..528892] to client.81113180 10.202.48.22:0/1302109
2015-08-06 01:00:58.294815 7fd57c264700 10 mon-018@2(peon).osd e528892 build_incremental [528892..528892]
2015-08-06 01:00:58.335493 7fd57c264700 10 mon-018@2(peon).osd e528892 check_sub 0x72c20c0 next 528892 (onetime)
2015-08-06 01:00:58.335508 7fd57c264700  5 mon-018@2(peon).osd e528892 send_incremental [528892..528892] to client.81122956 10.202.48.29:0/1040905
2015-08-06 01:00:58.335512 7fd57c264700 10 mon-018@2(peon).osd e528892 build_incremental [528892..528892]

40678 ms from build_incremental() to the next check_sub(). in this case, a lease timeout followed.

2015-08-07 02:07:07.063950 7f475f98d700 10 mon-018@2(peon).osd e529993 check_sub 0x17c94340 next 529993 (onetime)
2015-08-07 02:07:07.063961 7f475f98d700  5 mon-018@2(peon).osd e529993 send_incremental [529993..529993] to client.84840059 10.202.48.34:0/2331792
2015-08-07 02:07:07.063974 7f475f98d700 10 mon-018@2(peon).osd e529993 build_incremental [529993..529993]
2015-08-07 02:07:07.064150 7f475f98d700 10 mon-018@2(peon).osd e529993 check_sub 0x1bf26a00 next 529993 (onetime)
2015-08-07 02:07:07.064159 7f475f98d700  5 mon-018@2(peon).osd e529993 send_incremental [529993..529993] to client.80986206 10.202.48.26:0/1364503
2015-08-07 02:07:07.064167 7f475f98d700 10 mon-018@2(peon).osd e529993 build_incremental [529993..529993]
2015-08-07 02:07:07.064268 7f475f98d700 10 mon-018@2(peon).osd e529993 check_sub 0x1baae100 next 529993 (onetime)

176 ms from build_incremental() to the next check_sub().

ubuntu@teuthology $ grep '29993..529993' mon.18.log | grep send_incremental |  head -n1
2015-08-07 02:07:07.063961 7f475f98d700  5 mon-018@2(peon).osd e529993 send_incremental [529993..529993] to client.84840059 10.202.48.34:0/2331792
ubuntu@teuthology $ grep '29993..529993' mon.18.log | grep send_incremental |  tail -n1
2015-08-07 02:07:07.270799 7f475f98d700  5 mon-018@2(peon).osd e529993 send_incremental [529993..529993] to osd.411 10.202.49.16:6821/29473
ubuntu@teuthology$ grep '29993..529993' mon.18.log | grep send_incremental | awk '{print $10}'  |less | cut -d'.' -f1|grep client | wc -l
729

and it replied 728 osdmap subscriptions in 206838 ms, i.e. 0.2 s.

$ grep '29993..529993' mon.18.log | grep send_incremental | awk '{print $11}'  | cut -d':' -f1 | sort | uniq | wc -l
79

they comes from 79 ip addresses. so the monitor performed well with the same load.
Actions #3

Updated by Kefu Chai over 8 years ago

sam suggested,

we can also change the

- mon_leveldb_cache_size // increase this value to see if it remedies the situation
- mon_leveldb_size_warn

Actions #4

Updated by Greg Farnum over 8 years ago

These numbers look very strange to me. Do we have any more details about what's happening here, or why things might be so slow?

Actions #5

Updated by Kefu Chai over 8 years ago

Do we have any more details about what's happening here

per Tupper, this happens when an OSD host restarts.

or why things might be so slow?

one reason could be, the leveldb was compacting at that moment.

Actions #6

Updated by Kefu Chai over 8 years ago

  • Status changed from 12 to Fix Under Review
Actions #7

Updated by Kefu Chai over 8 years ago

  • Description updated (diff)
  • Affected Versions v0.80.10 added
Actions #8

Updated by Kefu Chai over 8 years ago

  • Status changed from Fix Under Review to Pending Backport
  • Backport set to firefly
Actions #9

Updated by Loïc Dachary over 8 years ago

  • Backport changed from firefly to firefly,hammer
Actions #10

Updated by Loïc Dachary over 8 years ago

  • Status changed from Pending Backport to Resolved
Actions

Also available in: Atom PDF