#!/usr/bin/perl -- use strict; use warnings; use Path::Tiny qw/ path /; use File::Map qw' map_file advise '; eval { do 'memusage-workingset-virtualmemory.pl'; 1 } or warn $@; sub memusage() { print mems($$), "\n"; } my $filename = 'goner-is-gone.txt'; my $fh = path($filename)->openw_raw; print $fh "01234567789abcdefghijklmnopqrstuvwxyz\n" for 1 .. 1_400_000; close $fh; print -s $filename, "\n"; memusage(); { map_file my $map, $filename, '+<'; memusage(); #~ advise( $map, 'sequential' ); ## no visible difference in pslist from normal #~ advise( $map, 'random' ); ## same memusage(); my @intervals = map { $_ * ( 1024 * 1024 ) } 1 .. 100; ## after every mb print something my $lpos = 0; while ( $map =~ m{z}g ) { my $pos = pos($map); $lpos = $pos; next if $pos < $intervals[0]; shift @intervals; print 'pos ', $pos, "\n"; memusage(); } print "last pos $lpos\n"; memusage(); #~ <>; } memusage(); path($filename)->remove; __END__ 53200000 WVM: 21952 { WS: 6164 VM: 3344 } WVM: 73908 { WS: 6200 VM: 3444 } WVM: 73908 { WS: 6200 VM: 3444 } pos 1048609 WVM: 73908 { WS: 7236 VM: 3456 } pos 2097181 WVM: 73908 { WS: 8264 VM: 3456 } pos 3145753 WVM: 73908 { WS: 9292 VM: 3456 } pos 4194325 WVM: 73908 { WS: 10320 VM: 3456 } pos 5242897 WVM: 73908 { WS: 11344 VM: 3456 } pos 6291469 WVM: 73908 { WS: 12372 VM: 3456 } pos 7340041 WVM: 73908 { WS: 13400 VM: 3456 } pos 8388613 WVM: 73908 { WS: 14428 VM: 3456 } pos 9437185 WVM: 73908 { WS: 15452 VM: 3456 } pos 10485795 WVM: 73908 { WS: 16480 VM: 3456 } pos 11534367 WVM: 73908 { WS: 17508 VM: 3456 } pos 12582939 WVM: 73908 { WS: 18536 VM: 3456 } pos 13631511 WVM: 73908 { WS: 19560 VM: 3456 } pos 14680083 WVM: 73908 { WS: 20588 VM: 3456 } pos 15728655 WVM: 73908 { WS: 21616 VM: 3456 } pos 16777227 WVM: 73908 { WS: 22644 VM: 3456 } pos 17825799 WVM: 73908 { WS: 23668 VM: 3456 } pos 18874371 WVM: 73908 { WS: 24696 VM: 3456 } pos 19922981 WVM: 73908 { WS: 25724 VM: 3456 } pos 20971553 WVM: 73908 { WS: 26752 VM: 3456 } pos 22020125 WVM: 73908 { WS: 27776 VM: 3456 } pos 23068697 WVM: 73908 { WS: 28804 VM: 3456 } pos 24117269 WVM: 73908 { WS: 29832 VM: 3456 } pos 25165841 WVM: 73908 { WS: 30860 VM: 3456 } pos 26214413 WVM: 73908 { WS: 31884 VM: 3456 } pos 27262985 WVM: 73908 { WS: 32912 VM: 3456 } pos 28311557 WVM: 73908 { WS: 33940 VM: 3456 } pos 29360129 WVM: 73908 { WS: 34968 VM: 3456 } pos 30408739 WVM: 73908 { WS: 35992 VM: 3456 } pos 31457311 WVM: 73908 { WS: 37020 VM: 3456 } pos 32505883 WVM: 73908 { WS: 38048 VM: 3456 } pos 33554455 WVM: 73908 { WS: 39076 VM: 3456 } pos 34603027 WVM: 73908 { WS: 40100 VM: 3456 } pos 35651599 WVM: 73908 { WS: 41128 VM: 3456 } pos 36700171 WVM: 73908 { WS: 42156 VM: 3456 } pos 37748743 WVM: 73908 { WS: 43184 VM: 3456 } pos 38797315 WVM: 73908 { WS: 44208 VM: 3456 } pos 39845925 WVM: 73908 { WS: 45236 VM: 3456 } pos 40894497 WVM: 73908 { WS: 46268 VM: 3456 } pos 41943069 WVM: 73908 { WS: 47296 VM: 3456 } pos 42991641 WVM: 73908 { WS: 48320 VM: 3456 } pos 44040213 WVM: 73908 { WS: 49348 VM: 3456 } pos 45088785 WVM: 73908 { WS: 50376 VM: 3456 } pos 46137357 WVM: 73908 { WS: 51404 VM: 3456 } pos 47185929 WVM: 73908 { WS: 52428 VM: 3456 } pos 48234501 WVM: 73908 { WS: 53456 VM: 3456 } pos 49283073 WVM: 73908 { WS: 54484 VM: 3456 } pos 50331683 WVM: 73908 { WS: 55512 VM: 3456 } pos 51380255 WVM: 73908 { WS: 56536 VM: 3456 } pos 52428827 WVM: 73908 { WS: 57564 VM: 3456 } last pos 53199999 WVM: 73908 { WS: 58320 VM: 3456 } WVM: 21952 { WS: 6264 VM: 3356 }