… | |
… | |
3607 | |
3607 | |
3608 | $RUNTIME += $TICK; |
3608 | $RUNTIME += $TICK; |
3609 | $NEXT_TICK += $TICK; |
3609 | $NEXT_TICK += $TICK; |
3610 | |
3610 | |
3611 | if ($NOW >= $NEXT_RUNTIME_WRITE) { |
3611 | if ($NOW >= $NEXT_RUNTIME_WRITE) { |
3612 | $NEXT_RUNTIME_WRITE = $NOW + 10; |
3612 | $NEXT_RUNTIME_WRITE = List::Util::max $NEXT_RUNTIME_WRITE + 10, $NOW + 5.; |
3613 | Coro::async_pool { |
3613 | Coro::async_pool { |
3614 | $Coro::current->{desc} = "runtime saver"; |
3614 | $Coro::current->{desc} = "runtime saver"; |
3615 | write_runtime |
3615 | write_runtime |
3616 | or warn "ERROR: unable to write runtime file: $!"; |
3616 | or warn "ERROR: unable to write runtime file: $!"; |
3617 | }; |
3617 | }; |
… | |
… | |
3630 | _post_tick; |
3630 | _post_tick; |
3631 | }; |
3631 | }; |
3632 | $TICK_WATCHER->priority (EV::MAXPRI); |
3632 | $TICK_WATCHER->priority (EV::MAXPRI); |
3633 | |
3633 | |
3634 | { |
3634 | { |
|
|
3635 | # configure BDB |
|
|
3636 | |
3635 | BDB::min_parallel 8; |
3637 | BDB::min_parallel 8; |
3636 | BDB::max_poll_reqs $TICK * 0.1; |
3638 | BDB::max_poll_reqs $TICK * 0.1; |
|
|
3639 | $Coro::BDB::WATCHER->priority (1); |
3637 | |
3640 | |
3638 | unless ($DB_ENV) { |
3641 | unless ($DB_ENV) { |
3639 | $DB_ENV = BDB::db_env_create; |
3642 | $DB_ENV = BDB::db_env_create; |
3640 | $DB_ENV->set_flags (BDB::AUTO_COMMIT | BDB::REGION_INIT | BDB::TXN_NOSYNC |
3643 | $DB_ENV->set_flags (BDB::AUTO_COMMIT | BDB::REGION_INIT | BDB::TXN_NOSYNC |
3641 | | BDB::LOG_AUTOREMOVE, 1); |
3644 | | BDB::LOG_AUTOREMOVE, 1); |
… | |
… | |
3668 | BDB::db_env_memp_trickle $DB_ENV, 20, 0, sub { }; |
3671 | BDB::db_env_memp_trickle $DB_ENV, 20, 0, sub { }; |
3669 | }; |
3672 | }; |
3670 | } |
3673 | } |
3671 | |
3674 | |
3672 | { |
3675 | { |
|
|
3676 | # configure IO::AIO |
|
|
3677 | |
3673 | IO::AIO::min_parallel 8; |
3678 | IO::AIO::min_parallel 8; |
3674 | |
|
|
3675 | undef $Coro::AIO::WATCHER; |
|
|
3676 | IO::AIO::max_poll_time $TICK * 0.1; |
3679 | IO::AIO::max_poll_time $TICK * 0.1; |
3677 | $AIO_POLL_WATCHER = EV::io IO::AIO::poll_fileno, EV::READ, \&IO::AIO::poll_cb; |
3680 | $Coro::AIO::WATCHER->priority (1); |
3678 | } |
3681 | } |
3679 | |
3682 | |
3680 | my $_log_backtrace; |
3683 | my $_log_backtrace; |
3681 | |
3684 | |
3682 | sub _log_backtrace { |
3685 | sub _log_backtrace { |