gc_tracer 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +24 -0
- data/ext/gc_tracer/gc_logging.c +26 -2
- data/lib/gc_tracer/version.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b9ce36d7506d6380617767354fcf92f131fb8eb2
         | 
| 4 | 
            +
              data.tar.gz: cd6eeb8447b71f3e4ceafd623af6bf0e793c45a7
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 28c17973fe087d97552e5b12d0e8e0a3b43e0910e2591ae9144d3e6225bdd008da490777939b7d2cd97582a2fbc7e907b18b4c2517869fa65cad7ffb36fc1b66
         | 
| 7 | 
            +
              data.tar.gz: b27a89753bf65de227143b1e5966e131e5c47cc595cd90332f0265fa6c6bd28a35febfc5306fa7b0615dd93ae6c8aeeaa9c61db034eadcdb85beeaa867c64808
         | 
    
        data/README.md
    CHANGED
    
    | @@ -48,6 +48,8 @@ ensure | |
| 48 48 | 
             
            end
         | 
| 49 49 | 
             
            ```
         | 
| 50 50 |  | 
| 51 | 
            +
            ### Setup
         | 
| 52 | 
            +
             | 
| 51 53 | 
             
            In the stored file (filename), you can get tab separated values of:
         | 
| 52 54 |  | 
| 53 55 | 
             
            * `GC.stat()`
         | 
| @@ -100,6 +102,28 @@ and :nano_time (if platform supports clock_gettime()). | |
| 100 102 |  | 
| 101 103 | 
             
            See lib/gc_tracer.rb for more details.
         | 
| 102 104 |  | 
| 105 | 
            +
            ### Custom events
         | 
| 106 | 
            +
             | 
| 107 | 
            +
            You can add custom events by your own. Calling 
         | 
| 108 | 
            +
            `GC::Tracer.custom_event_logging(event_name)` in your program will puts 
         | 
| 109 | 
            +
            new statistics line into the logging file.
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            For example, the following program insert 1000 custom event lines into 
         | 
| 112 | 
            +
            logging file (stderr for this type).
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            ```ruby
         | 
| 115 | 
            +
            GC::Tracer.start_logging(events: %i(start), gc_stat: false) do
         | 
| 116 | 
            +
              1_000.times{|i|
         | 
| 117 | 
            +
                1_000.times{''}
         | 
| 118 | 
            +
                GC::Tracer.custom_event_logging("custom_#{i}")
         | 
| 119 | 
            +
              }
         | 
| 120 | 
            +
            end
         | 
| 121 | 
            +
            ```
         | 
| 122 | 
            +
             | 
| 123 | 
            +
            This method is useful to trace where the GC events occur in your 
         | 
| 124 | 
            +
            application.
         | 
| 125 | 
            +
             | 
| 126 | 
            +
             | 
| 103 127 | 
             
            ## Contributing
         | 
| 104 128 |  | 
| 105 129 | 
             
            1. Fork it ( http://github.com/ko1/gc_tracer/fork )
         | 
    
        data/ext/gc_tracer/gc_logging.c
    CHANGED
    
    | @@ -289,13 +289,13 @@ out_rusage(struct gc_logging *logging) | |
| 289 289 | 
             
            }
         | 
| 290 290 |  | 
| 291 291 | 
             
            static void
         | 
| 292 | 
            -
             | 
| 292 | 
            +
            out_stat(struct gc_logging *logging, const char *event)
         | 
| 293 293 | 
             
            {
         | 
| 294 294 | 
             
            #if HAVE_GETRUSAGE
         | 
| 295 295 | 
             
                logging->filled_rusage = 0;
         | 
| 296 296 | 
             
            #endif
         | 
| 297 297 |  | 
| 298 | 
            -
                out_str(logging->out,  | 
| 298 | 
            +
                out_str(logging->out, event);
         | 
| 299 299 | 
             
                (logging->config.out_time_func)(logging->out);
         | 
| 300 300 |  | 
| 301 301 | 
             
                if (logging->config.log_gc_stat) out_gc_stat(logging);
         | 
| @@ -306,6 +306,12 @@ logging_start_i(VALUE tpval, struct gc_logging *logging) | |
| 306 306 | 
             
                out_terminate(logging->out);
         | 
| 307 307 | 
             
            }
         | 
| 308 308 |  | 
| 309 | 
            +
            static void
         | 
| 310 | 
            +
            logging_start_i(VALUE tpval, struct gc_logging *logging)
         | 
| 311 | 
            +
            {
         | 
| 312 | 
            +
                out_stat(logging, logging->event);
         | 
| 313 | 
            +
            }
         | 
| 314 | 
            +
             | 
| 309 315 | 
             
            static void
         | 
| 310 316 | 
             
            out_header_each(struct gc_logging *logging, VALUE *syms, int n)
         | 
| 311 317 | 
             
            {
         | 
| @@ -562,6 +568,21 @@ gc_tracer_stop_logging(VALUE self) | |
| 562 568 | 
             
                return self;
         | 
| 563 569 | 
             
            }
         | 
| 564 570 |  | 
| 571 | 
            +
            static VALUE
         | 
| 572 | 
            +
            gc_tracer_custom_event_logging(VALUE self, VALUE event_str)
         | 
| 573 | 
            +
            {
         | 
| 574 | 
            +
                struct gc_logging *logging = &trace_logging;
         | 
| 575 | 
            +
                const char *str = StringValueCStr(event_str);
         | 
| 576 | 
            +
             | 
| 577 | 
            +
                if (logging->enabled) {
         | 
| 578 | 
            +
            	out_stat(logging, str);
         | 
| 579 | 
            +
                }
         | 
| 580 | 
            +
                else {
         | 
| 581 | 
            +
            	rb_raise(rb_eRuntimeError, "GC tracer is not enabled.");
         | 
| 582 | 
            +
                }
         | 
| 583 | 
            +
                return self;
         | 
| 584 | 
            +
            }
         | 
| 585 | 
            +
             | 
| 565 586 | 
             
            void
         | 
| 566 587 | 
             
            Init_gc_tracer_logging(VALUE mod)
         | 
| 567 588 | 
             
            {
         | 
| @@ -576,6 +597,9 @@ Init_gc_tracer_logging(VALUE mod) | |
| 576 597 | 
             
                rb_define_module_function(mod, "setup_logging_gc_latest_gc_info=", gc_tracer_setup_logging_gc_latest_gc_info, 1);
         | 
| 577 598 | 
             
                rb_define_module_function(mod, "setup_logging_rusage=", gc_tracer_setup_logging_rusage, 1);
         | 
| 578 599 |  | 
| 600 | 
            +
                /* custom event */
         | 
| 601 | 
            +
                rb_define_module_function(mod, "custom_event_logging", gc_tracer_custom_event_logging, 1);
         | 
| 602 | 
            +
             | 
| 579 603 | 
             
                /* setup data */
         | 
| 580 604 | 
             
                setup_gc_trace_symbols();
         | 
| 581 605 | 
             
                create_gc_hooks();
         | 
    
        data/lib/gc_tracer/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: gc_tracer
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.0 | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Koichi Sasada
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-12- | 
| 11 | 
            +
            date: 2014-12-18 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |