Skip to content
/ easy Public

🍧 nice and ionice combined to a single utility, written in pure Go

License

Notifications You must be signed in to change notification settings

xyproto/easy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Easy

Easy implements the functionality of both nice and ionice without using C.

It's also a drop-in replacement for ionice (from util-linux).

  • Easy started out as a port of ionice to Go, but more functionality has been added since then.
  • Easy can also be used to give applications increased I/O priority or niceness.
  • Easy may be useful for running ie. Zoom or Chromium on desktop Linux, with a lower I/O priority.

Example use

Run chromium in a very relaxed way (nice both in terms of CPU usage and in terms of I/O usage):

easy -c3 -N chromium

The same as above, but with the easier to remember --both or -b flag:

easy -b chromium

Differences from ionice

These flags are for adjusting the process niceness (from nice not ionice):

  • -N or --nice can be used to also set the process niceness to 10 (same as nice COMMAND).
  • -s or --setnice can be used to set the process niceness.
  • -a or --adjustment can be used to adjust the process niceness by the given offset.

Related projects

  • ionice from util-linux.
  • nice from coreutils.
  • tinyionice is a fork of ionice, in only 300 lines of C.
  • gionice is a Go module where the core functionality of the ionice utility has been ported to Go.

Why

This port exists mainly because I wanted to have a Go module for changing the I/O priority of servers written in Go. It was relatively easy to add a port of the ionice utility as well, once that was done.

Requirements

  • A recent Go compiler.
  • Linux.

Build

go build -mod=vendor

Install

install -Dm755 easy /usr/bin/easy
gzip easy.1
install -Dm644 easy.1.gz /usr/share/man/man1/easy.1.gz

Dev install with Go 1.17 or later

go install github.com/xyproto/easy@latest

General info

  • Version: 1.5.0
  • Licence: GPL2