Class: File

Inherits:
Object
  • Object
show all
Defined in:
lib/mincore.rb

Overview

The File mincore extension

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.cachedel(filename, count = 1) ⇒ Int

Attempts to delete cached pages of a file, one or more times

Examples:

Sample run - file pages would or would not get flushed

File.cachedel("/path/to/useless/file", 2) #=> 0

Parameters:

  • filename (String)

    file name

  • count (Int) (defaults to: 1)

    times posix_fadvise() will be run

Returns:

  • (Int)

    execution status



165
166
167
# File 'lib/mincore.rb', line 165

def self.cachedel(filename, count=1) 
  self._cachedel(filename, count)
end

.mincore(filename) ⇒ Int

Returns page cache status for a given file. Status is provided as a boolean array of size ( filesize + PAGESIZE -1 ) / PAGESIZE

Examples:

Sample run - on a file of size 20KB

File.mincore("/path/to/important/file") #=> [true, true, true, false, false]

Parameters:

  • filename (String)

    file name

Returns:

  • (Int)

    execution status



178
179
180
# File 'lib/mincore.rb', line 178

def self.mincore(filename)
  self._mincore(filename)
end

.PAGESIZEInt

get system page size (4096 on Intel)

Examples:

  • On Intel machine
File.PAGESIZE #=> 4096

Returns:

  • (Int)

    the page size



188
189
190
# File 'lib/mincore.rb', line 188

def self.PAGESIZE
  self._PAGESIZE
end

Instance Method Details

#numpagesInt

Returns the number of system pages required to store file in memory

Examples:

Sample run - on a file of size 20KB

File.open("/path/to/some/file").numpages #=> 5

Returns:

  • (Int)

    number of cacheable pages



151
152
153
154
# File 'lib/mincore.rb', line 151

def numpages
  pagesize = self.class.PAGESIZE
  (self.stat.size + pagesize -1 ) / pagesize
end