prometheus-client-mmap 0.27.0-arm64-darwin → 0.28.1-arm64-darwin
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 +10 -4
 - data/ext/fast_mmaped_file/mmap.c +0 -10
 - data/ext/fast_mmaped_file_rs/src/mmap/inner.rs +0 -10
 - data/ext/fast_mmaped_file_rs/src/mmap.rs +0 -3
 - data/lib/2.7/fast_mmaped_file.bundle +0 -0
 - data/lib/2.7/fast_mmaped_file_rs.bundle +0 -0
 - data/lib/3.0/fast_mmaped_file.bundle +0 -0
 - data/lib/3.0/fast_mmaped_file_rs.bundle +0 -0
 - data/lib/3.1/fast_mmaped_file.bundle +0 -0
 - data/lib/3.1/fast_mmaped_file_rs.bundle +0 -0
 - data/lib/3.2/fast_mmaped_file.bundle +0 -0
 - data/lib/3.2/fast_mmaped_file_rs.bundle +0 -0
 - data/lib/prometheus/client/support/puma.rb +44 -0
 - data/lib/prometheus/client/version.rb +1 -1
 - metadata +3 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: af140c4fcee2eda007fe642f90cbddde28819047f8c49991d9b76f0413891acc
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 4e36c3d6c317d8718fe5a431e07b784e493323bc4f058a335ca1ecbca241b6ad
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: c448775aed81267029e384ca3b34b012b3fe07ddb4b7449812ffbfd3b16d5744f5f400d7c132445c5b2049b0c2843abdfe3549022e03d5d01b57dd4fce2e12a8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a0e034ad7851040363a1d29371ea7956e8a4bce72142eaf29775f4f1e720509bfe33a1406ba4f3ec55aab5995c12eba1694de31bf76d960dfd1961649989ccda
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -241,8 +241,8 @@ To use the C extension, set the environment variable 
     | 
|
| 
       241 
241 
     | 
    
         | 
| 
       242 
242 
     | 
    
         
             
            ### PID cardinality
         
     | 
| 
       243 
243 
     | 
    
         | 
| 
       244 
     | 
    
         
            -
            In multiprocess setup e.g. running under Unicorn, having worker process restart often 
     | 
| 
       245 
     | 
    
         
            -
            lead to performance problems when proccesing metric files. By default each process using
         
     | 
| 
      
 244 
     | 
    
         
            +
            In multiprocess setup e.g. running under Unicorn or Puma, having worker process restart often
         
     | 
| 
      
 245 
     | 
    
         
            +
            can lead to performance problems when proccesing metric files. By default each process using
         
     | 
| 
       246 
246 
     | 
    
         
             
            Prometheus metrics will create a set of files based on that process PID. With high worker
         
     | 
| 
       247 
247 
     | 
    
         
             
            churn this will lead to creation of thousands of files and in turn will cause very noticable
         
     | 
| 
       248 
248 
     | 
    
         
             
            slowdown when displaying metrics
         
     | 
| 
         @@ -250,14 +250,20 @@ slowdown when displaying metrics 
     | 
|
| 
       250 
250 
     | 
    
         
             
            To reduce this problem, a surrogate process id can be used. Set of all such IDs needs
         
     | 
| 
       251 
251 
     | 
    
         
             
            have low cardinality, and each process id must be unique among all running process.
         
     | 
| 
       252 
252 
     | 
    
         | 
| 
       253 
     | 
    
         
            -
            For Unicorn a worker id/number can be used to greatly speedup the metrics rendering.
         
     | 
| 
      
 253 
     | 
    
         
            +
            For Unicorn and Puma a worker id/number can be used to greatly speedup the metrics rendering.
         
     | 
| 
       254 
254 
     | 
    
         | 
| 
       255 
     | 
    
         
            -
             
     | 
| 
      
 255 
     | 
    
         
            +
            If you are using Unicorn, add this line to your `configure` block:
         
     | 
| 
       256 
256 
     | 
    
         | 
| 
       257 
257 
     | 
    
         
             
            ```ruby
         
     | 
| 
       258 
258 
     | 
    
         
             
              config.pid_provider = Prometheus::Client::Support::Unicorn.method(:worker_pid_provider)
         
     | 
| 
       259 
259 
     | 
    
         
             
            ```
         
     | 
| 
       260 
260 
     | 
    
         | 
| 
      
 261 
     | 
    
         
            +
            If you are using Puma, add this line to your `configure` block:
         
     | 
| 
      
 262 
     | 
    
         
            +
             
     | 
| 
      
 263 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 264 
     | 
    
         
            +
              config.pid_provider = Prometheus::Client::Support::Puma.method(:worker_pid_provider)
         
     | 
| 
      
 265 
     | 
    
         
            +
            ```
         
     | 
| 
      
 266 
     | 
    
         
            +
             
     | 
| 
       261 
267 
     | 
    
         
             
            ## Tools
         
     | 
| 
       262 
268 
     | 
    
         | 
| 
       263 
269 
     | 
    
         
             
            ### `bin/parse`
         
     | 
    
        data/ext/fast_mmaped_file/mmap.c
    CHANGED
    
    | 
         @@ -189,12 +189,6 @@ static void mm_free(mm_ipc *i_mm) { 
     | 
|
| 
       189 
189 
     | 
    
         
             
                    }
         
     | 
| 
       190 
190 
     | 
    
         | 
| 
       191 
191 
     | 
    
         
             
                    if (i_mm->t->path != (char *)-1) {
         
     | 
| 
       192 
     | 
    
         
            -
                        if (i_mm->t->real < i_mm->t->len && i_mm->t->vscope != MAP_PRIVATE &&
         
     | 
| 
       193 
     | 
    
         
            -
                            truncate(i_mm->t->path, i_mm->t->real) == -1) {
         
     | 
| 
       194 
     | 
    
         
            -
                            free(i_mm->t->path);
         
     | 
| 
       195 
     | 
    
         
            -
                            free(i_mm);
         
     | 
| 
       196 
     | 
    
         
            -
                            rb_raise(rb_eTypeError, "truncate");
         
     | 
| 
       197 
     | 
    
         
            -
                        }
         
     | 
| 
       198 
192 
     | 
    
         
             
                        free(i_mm->t->path);
         
     | 
| 
       199 
193 
     | 
    
         
             
                    }
         
     | 
| 
       200 
194 
     | 
    
         
             
                }
         
     | 
| 
         @@ -414,10 +408,6 @@ VALUE mm_unmap(VALUE obj) { 
     | 
|
| 
       414 
408 
     | 
    
         
             
                    }
         
     | 
| 
       415 
409 
     | 
    
         | 
| 
       416 
410 
     | 
    
         
             
                    if (i_mm->t->path != (char *)-1) {
         
     | 
| 
       417 
     | 
    
         
            -
                        if (i_mm->t->real < i_mm->t->len && i_mm->t->vscope != MAP_PRIVATE &&
         
     | 
| 
       418 
     | 
    
         
            -
                            truncate(i_mm->t->path, i_mm->t->real) == -1) {
         
     | 
| 
       419 
     | 
    
         
            -
                            rb_raise(rb_eTypeError, "truncate");
         
     | 
| 
       420 
     | 
    
         
            -
                        }
         
     | 
| 
       421 
411 
     | 
    
         
             
                        free(i_mm->t->path);
         
     | 
| 
       422 
412 
     | 
    
         
             
                    }
         
     | 
| 
       423 
413 
     | 
    
         | 
| 
         @@ -224,16 +224,6 @@ impl InnerMmap { 
     | 
|
| 
       224 
224 
     | 
    
         
             
                    }
         
     | 
| 
       225 
225 
     | 
    
         
             
                }
         
     | 
| 
       226 
226 
     | 
    
         | 
| 
       227 
     | 
    
         
            -
                /// Truncate the mmapped file to the end of the metrics data.
         
     | 
| 
       228 
     | 
    
         
            -
                pub fn truncate_file(&mut self) -> Result<()> {
         
     | 
| 
       229 
     | 
    
         
            -
                    // CAST: no-op on 64-bit, widening on 32-bit.
         
     | 
| 
       230 
     | 
    
         
            -
                    let trunc_len = self.len as u64;
         
     | 
| 
       231 
     | 
    
         
            -
             
     | 
| 
       232 
     | 
    
         
            -
                    self.file
         
     | 
| 
       233 
     | 
    
         
            -
                        .set_len(trunc_len)
         
     | 
| 
       234 
     | 
    
         
            -
                        .map_err(|e| MmapError::legacy(format!("truncate: {e}"), RubyError::Type))
         
     | 
| 
       235 
     | 
    
         
            -
                }
         
     | 
| 
       236 
     | 
    
         
            -
             
     | 
| 
       237 
227 
     | 
    
         
             
                /// Load the `used` header containing the size of the metrics data written.
         
     | 
| 
       238 
228 
     | 
    
         
             
                pub fn load_used(&self) -> Result<u32> {
         
     | 
| 
       239 
229 
     | 
    
         
             
                    match read_u32(self.map.as_ref(), 0) {
         
     | 
| 
         @@ -225,9 +225,6 @@ impl MmapedFile { 
     | 
|
| 
       225 
225 
     | 
    
         
             
                    let rs_self = &*rb_self;
         
     | 
| 
       226 
226 
     | 
    
         | 
| 
       227 
227 
     | 
    
         
             
                    rs_self.inner_mut(|inner| {
         
     | 
| 
       228 
     | 
    
         
            -
                        // truncate file to actual used size
         
     | 
| 
       229 
     | 
    
         
            -
                        inner.truncate_file()?;
         
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
228 
     | 
    
         
             
                        // We are about to release the backing mmap for Ruby's String
         
     | 
| 
       232 
229 
     | 
    
         
             
                        // objects. If Ruby attempts to read from them the program will
         
     | 
| 
       233 
230 
     | 
    
         
             
                        // segfault. We update the length of all Strings to zero so Ruby
         
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         Binary file 
     | 
| 
         @@ -0,0 +1,44 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Prometheus
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Client
         
     | 
| 
      
 3 
     | 
    
         
            +
                module Support
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module Puma
         
     | 
| 
      
 5 
     | 
    
         
            +
                    extend self
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    def worker_pid_provider
         
     | 
| 
      
 8 
     | 
    
         
            +
                      wid = worker_id
         
     | 
| 
      
 9 
     | 
    
         
            +
                      if wid = worker_id
         
     | 
| 
      
 10 
     | 
    
         
            +
                        wid
         
     | 
| 
      
 11 
     | 
    
         
            +
                      else
         
     | 
| 
      
 12 
     | 
    
         
            +
                        "process_id_#{Process.pid}"
         
     | 
| 
      
 13 
     | 
    
         
            +
                      end
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                    private
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                    def object_based_worker_id
         
     | 
| 
      
 19 
     | 
    
         
            +
                      return unless defined?(::Puma::Cluster::Worker)
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                      workers = ObjectSpace.each_object(::Puma::Cluster::Worker)
         
     | 
| 
      
 22 
     | 
    
         
            +
                      return if workers.nil?
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                      workers_first = workers.first
         
     | 
| 
      
 25 
     | 
    
         
            +
                      workers_first.index unless workers_first.nil?
         
     | 
| 
      
 26 
     | 
    
         
            +
                    end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                    def program_name
         
     | 
| 
      
 29 
     | 
    
         
            +
                      $PROGRAM_NAME
         
     | 
| 
      
 30 
     | 
    
         
            +
                    end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                    def worker_id
         
     | 
| 
      
 33 
     | 
    
         
            +
                      if matchdata = program_name.match(/puma.*cluster worker ([0-9]+):/)
         
     | 
| 
      
 34 
     | 
    
         
            +
                        "puma_#{matchdata[1]}"
         
     | 
| 
      
 35 
     | 
    
         
            +
                      elsif object_worker_id = object_based_worker_id
         
     | 
| 
      
 36 
     | 
    
         
            +
                        "puma_#{object_worker_id}"
         
     | 
| 
      
 37 
     | 
    
         
            +
                      elsif program_name.include?('puma')
         
     | 
| 
      
 38 
     | 
    
         
            +
                        'puma_master'
         
     | 
| 
      
 39 
     | 
    
         
            +
                      end
         
     | 
| 
      
 40 
     | 
    
         
            +
                    end
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
      
 42 
     | 
    
         
            +
                end
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: prometheus-client-mmap
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.28.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: arm64-darwin
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tobias Schmidt
         
     | 
| 
         @@ -11,7 +11,7 @@ authors: 
     | 
|
| 
       11 
11 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       12 
12 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       13 
13 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       14 
     | 
    
         
            -
            date: 2023- 
     | 
| 
      
 14 
     | 
    
         
            +
            date: 2023-10-05 00:00:00.000000000 Z
         
     | 
| 
       15 
15 
     | 
    
         
             
            dependencies:
         
     | 
| 
       16 
16 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       17 
17 
     | 
    
         
             
              name: rb_sys
         
     | 
| 
         @@ -197,6 +197,7 @@ files: 
     | 
|
| 
       197 
197 
     | 
    
         
             
            - lib/prometheus/client/registry.rb
         
     | 
| 
       198 
198 
     | 
    
         
             
            - lib/prometheus/client/simple_value.rb
         
     | 
| 
       199 
199 
     | 
    
         
             
            - lib/prometheus/client/summary.rb
         
     | 
| 
      
 200 
     | 
    
         
            +
            - lib/prometheus/client/support/puma.rb
         
     | 
| 
       200 
201 
     | 
    
         
             
            - lib/prometheus/client/support/unicorn.rb
         
     | 
| 
       201 
202 
     | 
    
         
             
            - lib/prometheus/client/uses_value_type.rb
         
     | 
| 
       202 
203 
     | 
    
         
             
            - lib/prometheus/client/version.rb
         
     |