@@ -15,25 +15,33 @@ def post_resolve(fact_name, _options)
15
15
16
16
def calculate_system_memory ( fact_name )
17
17
read_total_memory_in_bytes
18
- read_available_memory_in_bytes
18
+ read_used_memory_in_bytes
19
19
20
- @fact_list [ :used_bytes ] = @fact_list [ :total_bytes ] - @fact_list [ :available_bytes ]
20
+ @fact_list [ :available_bytes ] = @fact_list [ :total_bytes ] - @fact_list [ :used_bytes ]
21
21
@fact_list [ :capacity ] = Facter ::Util ::Resolvers ::FilesystemHelper
22
22
. compute_capacity ( @fact_list [ :used_bytes ] , @fact_list [ :total_bytes ] )
23
23
24
24
@fact_list [ fact_name ]
25
25
end
26
26
27
- def read_available_memory_in_bytes
28
- output = Facter ::Core ::Execution . execute ( 'vmstat -H --libxo json' , logger : log )
29
- data = JSON . parse ( output )
30
- @fact_list [ :available_bytes ] = data [ 'memory' ] [ 'free-memory' ] * 1024
27
+ def pagesize
28
+ @pagesize ||= Facter ::Freebsd ::FfiHelper . sysctl_by_name ( :long , 'vm.stats.vm.v_page_size' )
29
+ end
30
+
31
+ def read_used_memory_in_bytes
32
+ require_relative 'ffi/ffi_helper'
33
+
34
+ @fact_list [ :used_bytes ] = pagesize * (
35
+ Facter ::Freebsd ::FfiHelper . sysctl_by_name ( :long , 'vm.stats.vm.v_active_count' ) +
36
+ Facter ::Freebsd ::FfiHelper . sysctl_by_name ( :long , 'vm.stats.vm.v_wire_count' )
37
+ )
31
38
end
32
39
33
40
def read_total_memory_in_bytes
34
41
require_relative 'ffi/ffi_helper'
35
42
36
- @fact_list [ :total_bytes ] = Facter ::Freebsd ::FfiHelper . sysctl_by_name ( :long , 'hw.physmem' )
43
+ @fact_list [ :total_bytes ] = pagesize *
44
+ Facter ::Freebsd ::FfiHelper . sysctl_by_name ( :long , 'vm.stats.vm.v_page_count' )
37
45
end
38
46
end
39
47
end
0 commit comments