Browse Source
Merge pull request #1125 from trapexit/scheduling-priority
Allow setting of scheduling priority
pull/1126/head
trapexit
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
12 additions and
6 deletions
-
README.md
-
src/config.cpp
-
src/config.hpp
-
src/mergerfs.cpp
|
|
@ -1,6 +1,6 @@ |
|
|
|
% mergerfs(1) mergerfs user manual |
|
|
|
% Antonio SJ Musumeci <trapexit@spawn.link> |
|
|
|
% 2023-01-24 |
|
|
|
% 2023-01-25 |
|
|
|
|
|
|
|
# NAME |
|
|
|
|
|
|
@ -203,6 +203,9 @@ These options are the same regardless of whether you use them with the `mergerfs |
|
|
|
`read-thread-count` refers to the number of threads reading FUSE |
|
|
|
messages which are dispatched to process threads. -1 means disabled |
|
|
|
otherwise acts like `read-thread-count`. (default: -1) |
|
|
|
* **scheduling-priority=INT**: Set mergerfs' scheduling |
|
|
|
priority. Valid values range from -20 to 19. See `setpriority` man |
|
|
|
page for more details. (default: -10) |
|
|
|
* **fsname=STR**: Sets the name of the filesystem as seen in |
|
|
|
**mount**, **df**, etc. Defaults to a list of the source paths |
|
|
|
concatenated together with the longest common prefix removed. |
|
|
|
|
|
@ -64,6 +64,7 @@ namespace l |
|
|
|
IFERT("readdirplus"); |
|
|
|
IFERT("threads"); |
|
|
|
IFERT("version"); |
|
|
|
IFERT("scheduling-priority"); |
|
|
|
|
|
|
|
return false; |
|
|
|
} |
|
|
@ -103,6 +104,7 @@ Config::Config() |
|
|
|
readdir(ReadDir::ENUM::POSIX), |
|
|
|
readdirplus(false), |
|
|
|
rename_exdev(RenameEXDEV::ENUM::PASSTHROUGH), |
|
|
|
scheduling_priority(-10), |
|
|
|
security_capability(true), |
|
|
|
srcmounts(branches), |
|
|
|
statfs(StatFS::ENUM::BASE), |
|
|
@ -171,6 +173,7 @@ Config::Config() |
|
|
|
// _map["readdir"] = &readdir;
|
|
|
|
_map["readdirplus"] = &readdirplus; |
|
|
|
_map["rename-exdev"] = &rename_exdev; |
|
|
|
_map["scheduling-priority"] = &scheduling_priority; |
|
|
|
_map["security_capability"] = &security_capability; |
|
|
|
_map["srcmounts"] = &srcmounts; |
|
|
|
_map["statfs"] = &statfs; |
|
|
|
|
|
@ -133,6 +133,7 @@ public: |
|
|
|
ReadDir readdir; |
|
|
|
ConfigBOOL readdirplus; |
|
|
|
RenameEXDEV rename_exdev; |
|
|
|
ConfigINT scheduling_priority; |
|
|
|
ConfigBOOL security_capability; |
|
|
|
SrcMounts srcmounts; |
|
|
|
StatFS statfs; |
|
|
@ -145,6 +146,7 @@ public: |
|
|
|
ConfigBOOL writeback_cache; |
|
|
|
XAttr xattr; |
|
|
|
|
|
|
|
|
|
|
|
public: |
|
|
|
friend std::ostream& operator<<(std::ostream &s, |
|
|
|
const Config &c); |
|
|
|
|
|
@ -139,15 +139,13 @@ namespace l |
|
|
|
|
|
|
|
static |
|
|
|
void |
|
|
|
setup_resources(void) |
|
|
|
setup_resources(const int scheduling_priority_) |
|
|
|
{ |
|
|
|
const int prio = -10; |
|
|
|
|
|
|
|
std::srand(time(NULL)); |
|
|
|
resources::reset_umask(); |
|
|
|
resources::maxout_rlimit_nofile(); |
|
|
|
resources::maxout_rlimit_fsize(); |
|
|
|
resources::setpriority(prio); |
|
|
|
resources::setpriority(scheduling_priority_); |
|
|
|
} |
|
|
|
|
|
|
|
static |
|
|
@ -204,7 +202,7 @@ namespace l |
|
|
|
if(cfg->branches_mount_timeout > 0) |
|
|
|
l::wait_for_mount(cfg); |
|
|
|
|
|
|
|
l::setup_resources(); |
|
|
|
l::setup_resources(cfg->scheduling_priority); |
|
|
|
l::get_fuse_operations(ops,cfg->nullrw); |
|
|
|
|
|
|
|
return fuse_main(args.argc, |
|
|
|