< prev index next >
src/share/vm/gc_implementation/shenandoah/shenandoahPacer.hpp
Print this page
rev 10543 : [backport] Application pacing precision fixes
rev 10566 : [backport] Pacer should account actual size for elastic TLABs
rev 10598 : [backport] Shenandoah changes to allow enabling -Wreorder
*** 27,36 ****
--- 27,39 ----
#include "memory/allocation.hpp"
#include "utilities/numberSeq.hpp"
class ShenandoahHeap;
+ #define PACING_PROGRESS_UNINIT (-1)
+ #define PACING_PROGRESS_ZERO ( 0)
+
/**
* ShenandoahPacer provides allocation pacing mechanism.
*
* Currently it implements simple tax-and-spend pacing policy: GC threads provide
* credit, allocating thread spend the credit, or stall when credit is not available.
*** 40,52 ****
ShenandoahHeap* _heap;
volatile intptr_t _budget;
volatile jdouble _tax_rate;
BinaryMagnitudeSeq _delays;
public:
ShenandoahPacer(ShenandoahHeap* heap) :
! _heap(heap), _budget(0), _tax_rate(1) {}
void setup_for_idle();
void setup_for_mark();
void setup_for_evac();
void setup_for_updaterefs();
--- 43,63 ----
ShenandoahHeap* _heap;
volatile intptr_t _budget;
volatile jdouble _tax_rate;
BinaryMagnitudeSeq _delays;
+ volatile intptr_t _progress;
+ TruncatedSeq* _progress_history;
+ volatile intptr_t _epoch;
+
public:
ShenandoahPacer(ShenandoahHeap* heap) :
! _heap(heap), _budget(0), _tax_rate(1),
! _progress(PACING_PROGRESS_UNINIT),
! _progress_history(new TruncatedSeq(5)),
! _epoch(0) {
! }
void setup_for_idle();
void setup_for_mark();
void setup_for_evac();
void setup_for_updaterefs();
*** 57,70 ****
--- 68,88 ----
inline void report_alloc(size_t words);
bool claim_for_alloc(size_t words, bool force);
void pace_for_alloc(size_t words);
+ void unpace_for_alloc(intptr_t epoch, size_t words);
+
+ intptr_t epoch();
void print_on(outputStream* out) const;
private:
inline void report_internal(size_t words);
+ inline void report_progress_internal(size_t words);
+
void restart_with(jlong non_taxable_bytes, jdouble tax_rate);
+
+ size_t update_and_get_progress_history();
};
#endif //SHARE_VM_GC_SHENANDOAH_SHENANDOAHPACER_HPP
< prev index next >