edit in pijul/src/repository.rs at line 28
+
+ #[cfg(unix)]
+ pub fn max_files() -> usize {
+ let n = if let Ok((n, _)) = rlimit::getrlimit(rlimit::Resource::NOFILE) {
+ (n as usize / (2 * num_cpus::get())).max(1)
+ } else {
+ 256
+ };
+ debug!("max_files = {:?}", n);
+ n
+ }
+
+ #[cfg(not(unix))]
+ pub fn max_files() -> usize {
+ 1
+ }
replacement in pijul/src/repository.rs at line 99
[7.172]→[7.24102:24200](∅→∅),
[7.358]→[7.24102:24200](∅→∅),
[7.24102]→[7.24102:24200](∅→∅) − changes: libpijul::changestore::filesystem::FileSystem::from_root(&working_copy_dir),
+ changes: libpijul::changestore::filesystem::FileSystem::from_root(
+ &working_copy_dir,
+ crate::repository::max_files(),
+ ),
replacement in pijul/src/repository.rs at line 136
[7.268]→[7.25068:25157](∅→∅),
[7.503]→[7.25068:25157](∅→∅),
[7.25068]→[7.25068:25157](∅→∅) − changes: libpijul::changestore::filesystem::FileSystem::from_root(&cur),
+ changes: libpijul::changestore::filesystem::FileSystem::from_root(
+ &cur,
+ max_files(),
+ ),
replacement in pijul/src/remote/mod.rs at line 789
[7.61025]→[7.61025:61122](∅→∅) − let changes = libpijul::changestore::filesystem::FileSystem::from_root(&l.root);
+ let changes = libpijul::changestore::filesystem::FileSystem::from_root(
+ &l.root,
+ crate::repository::max_files(),
+ );
replacement in pijul/src/remote/mod.rs at line 865
[7.2569]→[7.2569:2665](∅→∅) − let store = libpijul::changestore::filesystem::FileSystem::from_changes(local);
+ let store = libpijul::changestore::filesystem::FileSystem::from_changes(
+ local,
+ crate::repository::max_files(),
+ );
replacement in pijul/src/remote/local.rs at line 62
[7.4367]→[7.80806:80896](∅→∅),
[7.80806]→[7.80806:80896](∅→∅) − let store = libpijul::changestore::filesystem::FileSystem::from_root(&self.root);
+ let store = libpijul::changestore::filesystem::FileSystem::from_root(
+ &self.root,
+ crate::repository::max_files(),
+ );
replacement in pijul/src/remote/local.rs at line 124
[7.82268]→[7.82268:82358](∅→∅) − let store = libpijul::changestore::filesystem::FileSystem::from_root(&self.root);
+ let store = libpijul::changestore::filesystem::FileSystem::from_root(
+ &self.root,
+ crate::repository::max_files(),
+ );
edit in pijul/Cargo.toml at line 92
replacement in libpijul/src/changestore/filesystem.rs at line 4
[7.824179]→[4.104729:104753](∅→∅) − use parking_lot::Mutex;
+ use std::cell::RefCell;
edit in libpijul/src/changestore/filesystem.rs at line 6
[7.824211]→[4.104754:104774](∅→∅) edit in libpijul/src/changestore/filesystem.rs at line 7
[7.824253]→[7.824253:824292](∅→∅) − const CHANGE_CACHE_SIZE: usize = 100;
−
replacement in libpijul/src/changestore/filesystem.rs at line 9
[7.87463]→[4.104775:104857](∅→∅) − change_cache: Arc<Mutex<lru_cache::LruCache<ChangeId, ChangeFile<'static>>>>,
+ change_cache: RefCell<lru_cache::LruCache<ChangeId, ChangeFile<'static>>>,
edit in libpijul/src/changestore/filesystem.rs at line 15
+ let len = self.change_cache.borrow().capacity();
replacement in libpijul/src/changestore/filesystem.rs at line 18
[7.87676]→[4.104858:104951](∅→∅) − change_cache: Arc::new(Mutex::new(lru_cache::LruCache::new(CHANGE_CACHE_SIZE))),
+ change_cache: RefCell::new(lru_cache::LruCache::new(len)),
replacement in libpijul/src/changestore/filesystem.rs at line 61
[7.825268]→[7.825268:825324](∅→∅) − pub fn from_root<P: AsRef<Path>>(root: P) -> Self {
+ pub fn from_root<P: AsRef<Path>>(root: P, cap: usize) -> Self {
replacement in libpijul/src/changestore/filesystem.rs at line 64
[7.825437]→[7.825437:825477](∅→∅) − Self::from_changes(changes_dir)
+ Self::from_changes(changes_dir, cap)
replacement in libpijul/src/changestore/filesystem.rs at line 69
[7.825612]→[7.825612:825668](∅→∅) − pub fn from_changes(changes_dir: PathBuf) -> Self {
+ pub fn from_changes(changes_dir: PathBuf, cap: usize) -> Self {
replacement in libpijul/src/changestore/filesystem.rs at line 73
[7.825791]→[4.104952:105045](∅→∅) − change_cache: Arc::new(Mutex::new(lru_cache::LruCache::new(CHANGE_CACHE_SIZE))),
+ change_cache: RefCell::new(lru_cache::LruCache::new(cap)),
replacement in libpijul/src/changestore/filesystem.rs at line 82
[7.826014]→[4.105046:105186](∅→∅) − parking_lot::MutexGuard<
− lru_cache::LruCache<crate::pristine::ChangeId, crate::change::ChangeFile<'static>>,
− >,
+ std::cell::RefMut<lru_cache::LruCache<ChangeId, ChangeFile<'static>>>,
replacement in libpijul/src/changestore/filesystem.rs at line 85
[7.826129]→[4.105187:105244](∅→∅) − let mut change_cache = self.change_cache.lock();
+ let mut change_cache = self.change_cache.borrow_mut();
replacement in libpijul/src/changestore/filesystem.rs at line 122
[7.827293]→[4.105245:105301](∅→∅) − self.change_cache.lock().remove(change_id);
+ self.change_cache.borrow_mut().remove(change_id);
replacement in libpijul/src/changestore/filesystem.rs at line 132
[7.827590]→[4.105302:105377](∅→∅) − if let Some(l) = self.change_cache.lock().get_mut(change_id) {
+ if let Some(l) = self.change_cache.borrow_mut().get_mut(change_id) {
edit in Cargo.lock at line 1512
edit in Cargo.lock at line 1776
+ ]
+
+ [[package]]
+ name = "rlimit"
+ version = "0.6.2"
+ source = "registry+https://github.com/rust-lang/crates.io-index"
+ checksum = "cc0bf25554376fd362f54332b8410a625c71f15445bca32ffdfdf4ec9ac91726"
+ dependencies = [
+ "libc",