diff options
author | Rémy Coutable <remy@rymai.me> | 2017-10-23 10:17:49 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-10-23 10:17:49 +0000 |
commit | 3f9022cf78a6e8fce1781d53e86e4955bd88c3c6 (patch) | |
tree | 2165bafc5513a9749d738fa2a9eb5052af4af969 | |
parent | 5295f23b4bf1b13c9395c1871edce0095cb852cc (diff) | |
parent | 5e2a748bb71f09cd662f10e5b3de6155c9c742ac (diff) | |
download | gitlab-ce-3f9022cf78a6e8fce1781d53e86e4955bd88c3c6.tar.gz |
Merge branch 'zj-peek-gitaly' into 'master'
Show Gitaly data in the peek performance bar
Closes #39231
See merge request gitlab-org/gitlab-ce!14949
-rw-r--r-- | app/views/peek/views/_gitaly.html.haml | 7 | ||||
-rw-r--r-- | changelogs/unreleased/zj-peek-gitaly.yml | 5 | ||||
-rw-r--r-- | config/initializers/peek.rb | 1 | ||||
-rw-r--r-- | lib/gitlab/gitaly_client.rb | 9 | ||||
-rw-r--r-- | lib/peek/views/gitaly.rb | 34 |
5 files changed, 56 insertions, 0 deletions
diff --git a/app/views/peek/views/_gitaly.html.haml b/app/views/peek/views/_gitaly.html.haml new file mode 100644 index 00000000000..a7d040d6821 --- /dev/null +++ b/app/views/peek/views/_gitaly.html.haml @@ -0,0 +1,7 @@ +- local_assigns.fetch(:view) + +%strong + %span{ data: { defer_to: "#{view.defer_key}-duration" } } ... + \/ + %span{ data: { defer_to: "#{view.defer_key}-calls" } } ... + Gitaly diff --git a/changelogs/unreleased/zj-peek-gitaly.yml b/changelogs/unreleased/zj-peek-gitaly.yml new file mode 100644 index 00000000000..bd2f2a07540 --- /dev/null +++ b/changelogs/unreleased/zj-peek-gitaly.yml @@ -0,0 +1,5 @@ +--- +title: Add Gitaly metrics to the performance bar +merge_request: +author: +type: other diff --git a/config/initializers/peek.rb b/config/initializers/peek.rb index a54d53cbbe2..1cff355346c 100644 --- a/config/initializers/peek.rb +++ b/config/initializers/peek.rb @@ -16,6 +16,7 @@ Peek.into Peek::Views::Redis Peek.into Peek::Views::Sidekiq Peek.into Peek::Views::Rblineprof Peek.into Peek::Views::GC +Peek.into Peek::Views::Gitaly # rubocop:disable Style/ClassAndModuleCamelCase class PEEK_DB_CLIENT diff --git a/lib/gitlab/gitaly_client.rb b/lib/gitlab/gitaly_client.rb index 6c1ae19ff11..6868be26758 100644 --- a/lib/gitlab/gitaly_client.rb +++ b/lib/gitlab/gitaly_client.rb @@ -33,6 +33,12 @@ module Gitlab MUTEX = Mutex.new private_constant :MUTEX + class << self + attr_accessor :query_time + end + + self.query_time = 0 + def self.stub(name, storage) MUTEX.synchronize do @stubs ||= {} @@ -83,11 +89,14 @@ module Gitlab # end # def self.call(storage, service, rpc, request) + start = Process.clock_gettime(Process::CLOCK_MONOTONIC) enforce_gitaly_request_limits(:call) kwargs = request_kwargs(storage) kwargs = yield(kwargs) if block_given? stub(service, storage).__send__(rpc, request, kwargs) # rubocop:disable GitlabSecurity/PublicSend + ensure + self.query_time += Process.clock_gettime(Process::CLOCK_MONOTONIC) - start end def self.request_kwargs(storage) diff --git a/lib/peek/views/gitaly.rb b/lib/peek/views/gitaly.rb new file mode 100644 index 00000000000..d519d8e86fa --- /dev/null +++ b/lib/peek/views/gitaly.rb @@ -0,0 +1,34 @@ +module Peek + module Views + class Gitaly < View + def duration + ::Gitlab::GitalyClient.query_time + end + + def calls + ::Gitlab::GitalyClient.get_request_count + end + + def results + { duration: formatted_duration, calls: calls } + end + + private + + def formatted_duration + ms = duration * 1000 + if ms >= 1000 + "%.2fms" % ms + else + "%.0fms" % ms + end + end + + def setup_subscribers + subscribe 'start_processing.action_controller' do + ::Gitlab::GitalyClient.query_time = 0 + end + end + end + end +end |