… | |
… | |
7 | use Errno (); |
7 | use Errno (); |
8 | use Time::HiRes; |
8 | use Time::HiRes; |
9 | use Fcntl; |
9 | use Fcntl; |
10 | use IO::AIO; |
10 | use IO::AIO; |
11 | |
11 | |
|
|
12 | # find all potential exit paths, this is slow, so this info is cached |
12 | sub find_exits { |
13 | sub find_exits { |
13 | my ($map) = @_; |
14 | my ($map) = @_; |
14 | |
15 | |
15 | my %exit; |
16 | my %exit; |
16 | |
17 | |
… | |
… | |
54 | |
55 | |
55 | aio_open $path, O_RDONLY, 0, sub { |
56 | aio_open $path, O_RDONLY, 0, sub { |
56 | my ($fh) = @_ |
57 | my ($fh) = @_ |
57 | or return; |
58 | or return; |
58 | aio_readahead $fh, 0, -s $fh, sub { |
59 | aio_readahead $fh, 0, -s $fh, sub { |
59 | my $stop = Time::HiRes::time; |
60 | my $time = Time::HiRes::time - $NOW; |
60 | warn "$path ", $stop-$NOW; |
61 | warn "LONG PREFETCH $path $time\n" if $time > 0.3; |
61 | }; |
62 | }; |
62 | }; |
63 | }; |
63 | } |
64 | } |
64 | } |
65 | } |
65 | |
66 | |