Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(182)

Side by Side Diff: src/heap/gc-tracer.cc

Issue 2413243002: Introduce a CompilerDispatcherTracer and track how long jobs take (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/heap/gc-tracer.h" 5 #include "src/heap/gc-tracer.h"
6 6
7 #include "src/counters.h" 7 #include "src/counters.h"
8 #include "src/heap/heap-inl.h" 8 #include "src/heap/heap-inl.h"
9 #include "src/isolate.h" 9 #include "src/isolate.h"
10 10
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 ContextDisposalRateInMilliseconds(), 668 ContextDisposalRateInMilliseconds(),
669 CompactionSpeedInBytesPerMillisecond()); 669 CompactionSpeedInBytesPerMillisecond());
670 break; 670 break;
671 case Event::START: 671 case Event::START:
672 break; 672 break;
673 default: 673 default:
674 UNREACHABLE(); 674 UNREACHABLE();
675 } 675 }
676 } 676 }
677 677
678 double GCTracer::AverageSpeed(const RingBuffer<BytesAndDuration>& buffer, 678 double GCTracer::AverageSpeed(const base::RingBuffer<BytesAndDuration>& buffer,
679 const BytesAndDuration& initial, double time_ms) { 679 const BytesAndDuration& initial, double time_ms) {
680 BytesAndDuration sum = buffer.Sum( 680 BytesAndDuration sum = buffer.Sum(
681 [time_ms](BytesAndDuration a, BytesAndDuration b) { 681 [time_ms](BytesAndDuration a, BytesAndDuration b) {
682 if (time_ms != 0 && a.second >= time_ms) return a; 682 if (time_ms != 0 && a.second >= time_ms) return a;
683 return std::make_pair(a.first + b.first, a.second + b.second); 683 return std::make_pair(a.first + b.first, a.second + b.second);
684 }, 684 },
685 initial); 685 initial);
686 uint64_t bytes = sum.first; 686 uint64_t bytes = sum.first;
687 double durations = sum.second; 687 double durations = sum.second;
688 if (durations == 0.0) return 0; 688 if (durations == 0.0) return 0;
689 double speed = bytes / durations; 689 double speed = bytes / durations;
690 const int max_speed = 1024 * MB; 690 const int max_speed = 1024 * MB;
691 const int min_speed = 1; 691 const int min_speed = 1;
692 if (speed >= max_speed) return max_speed; 692 if (speed >= max_speed) return max_speed;
693 if (speed <= min_speed) return min_speed; 693 if (speed <= min_speed) return min_speed;
694 return speed; 694 return speed;
695 } 695 }
696 696
697 double GCTracer::AverageSpeed(const RingBuffer<BytesAndDuration>& buffer) { 697 double GCTracer::AverageSpeed(
698 const base::RingBuffer<BytesAndDuration>& buffer) {
698 return AverageSpeed(buffer, MakeBytesAndDuration(0, 0), 0); 699 return AverageSpeed(buffer, MakeBytesAndDuration(0, 0), 0);
699 } 700 }
700 701
701 void GCTracer::RecordIncrementalMarkingSpeed(size_t bytes, double duration) { 702 void GCTracer::RecordIncrementalMarkingSpeed(size_t bytes, double duration) {
702 if (duration == 0 || bytes == 0) return; 703 if (duration == 0 || bytes == 0) return;
703 double current_speed = bytes / duration; 704 double current_speed = bytes / duration;
704 if (recorded_incremental_marking_speed_ == 0) { 705 if (recorded_incremental_marking_speed_ == 0) {
705 recorded_incremental_marking_speed_ = current_speed; 706 recorded_incremental_marking_speed_ = current_speed;
706 } else { 707 } else {
707 recorded_incremental_marking_speed_ = 708 recorded_incremental_marking_speed_ =
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 } 815 }
815 816
816 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); } 817 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); }
817 818
818 void GCTracer::NotifyIncrementalMarkingStart() { 819 void GCTracer::NotifyIncrementalMarkingStart() {
819 incremental_marking_start_time_ = heap_->MonotonicallyIncreasingTimeInMs(); 820 incremental_marking_start_time_ = heap_->MonotonicallyIncreasingTimeInMs();
820 } 821 }
821 822
822 } // namespace internal 823 } // namespace internal
823 } // namespace v8 824 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698