Managing LVE via command line – lvectl

lvectl command – CloudLinux

Here, in this topic, I’m going to explain the basic usages of “lvectl” command. lvectl is the primary tool for LVE management. To manage this tool you must have the root privilege to your server. lvectl is a part of lve-utils package.

We already discussed the basics of CloudLinux and its administrations. CloudLinux is a Linux based Operating system especially used in a shared environment which isolates each user in its own light weight virtualized environemnts (LVE) which consumes predefined amount of resources allocated for each user.

That is, each user will be in a caged environment. The resource usage of any user won’t affect the stability of another users.

CloudLinux installation guide

Check the category CloudLinux for more related articles on this technology.

Here I’m explaining how we can manage LVE for a user from command line. The command “lvectl” is used for this purpose.

Syntax

lvectl command [lveid] [options]

Please see the available options with “lvectl” command:

apply : apply config settings to specified LVE
apply all : apply config settings to all the LVEs
apply-many : to apply LVE limits to multiple distinct LVEs (uids of users are read from stdin)
set : set parameters for a LVE and/or create a LVE
set-user : set parameters for a LVE and/or create a LVE using username instead of ID
list : list loaded LVEs
list-user : list loaded LVEs, display username instead of user id
limits : show limits for loaded LVEs
delete : delete LVE and set configuration for that LVE to defaults
delete-user : delete LVE and set configuration for that user to defaults
destroy : destroy LVE (configuration file remains unchanged)
destroy all : destroy all LVE (configuration file remains unchanged)
destroy-many : to destroy LVE limits to multiple distinct LVEs (uids of users are read from stdin)
package-set : set LVE parameters for a package
package-list : list LVE parameters for packages
package-delete : delete LVE parameters for a package
paneluserslimits : show current user's limits for control panel
limit : limit PID into specified LVE. Parameters PID LVE_ID
release : release PID from LVE. Parameters PID
set-binary : add binary to be run inside LVE on execution
del-binary : remove binary from being run inside LVE on execution
list-binaries : list all binaries to be run inside LVE on execution
load-binaries : load binaries (used on startup) from config file
reload-binaries : re-load list of binaries from config file
help (-h) : show this message
version (-v) : version number.
lve-version : LVE version number

Options

--cpu=N : limit CPU usage; (deprecated. Use --speed)
--speed=N% : limit CPU usage in percentage; 100% is one core
--speed=Nmhz\ghz : limit CPU usage in mhz\ghz
--ncpu=N : limit VCPU usage (deprecated)
--io=N : define io limits (KB/s)
--nproc=N : limit number of processes
--pmem=N : limit physical memory usage for aplications inside LVE
--iops=N : limit io per second
--mem=N : mem alias for vmem (deprecated)
--vmem=N : limit virtual memory for applications inside LVE
--maxEntryProcs=N : limit number of entry processes
--save : save configuration settings (use with set) (deprecated)
--save-all-parameters : save all parameters even if they match with defaults settings
--json : returns result of command json formatted
--unlimited : set all limits to unlimited
--save-username : save username in the config file. This parameter is used in conjunction with set-user

Here I’m showing some examples

Q. Where is the default settings (configuration) located for LVE?

That’s the first question. The default configuration file is “/etc/container/ve.cfg” Here we add the default values of different LVEs.

Q. How to show list of LVEs and their limits?

Here we can use the “list” and “list-user” option with the command lvectl to list LVE limits of users. Please see the examples:

# lvectl list|more

      ID   SPEED    NCPU    PMEM    VMEM      EP   NPROC      IO    IOPS
 default     100       1    2.0G      0K      20       0    4096    1024
       1     100       1    2.0G      0K      20       0    4096    1024
       3    4800      48    2.0G      0K      20       0       0    1024
      99     100       1    2.0G      0K      20       0    4096    1024
     501     100       1    2.0G      0K      20       0    4096    1024
     502     100       1    2.0G      0K      20       0    4096    1024
     503     100       1    2.0G      0K      20       0    4096    1024
     504     100       1    2.0G      0K      20       0    4096    1024
     505     100       1    2.0G      0K      20       0    4096    1024
# lvectl list-user|more
      ID   SPEED    NCPU    PMEM    VMEM      EP   NPROC      IO    IOPS
 default     100       1    2.0G      0K      20       0    4096    1024
   bindd     100       1    2.0G      0K      20       0    4096    1024
   admdf    4800      48    2.0G      0K      20       0       0    1024
  nobody     100       1    2.0G      0K      20       0    4096    1024
aadddder     100       1    2.0G      0K      20       0    4096    1024
 aseeeer     100       1    2.0G      0K      20       0    4096    1024
  beeee8     100       1    2.0G      0K      20       0    4096    1024

The list-user option shows username instead of user id.

Q. How to manage LVE limits (cpu, ncpu, io, nproc, pmem, vmem and entry processes) for different users?

We can use set and set-user options to set values to LVE. Consider the scenario, if we want to set all LVE limits of the user “crybit” to unlimited, you can use the following command:

# lvectl set-user crybit --unlimited

If you’re using the “set” option please use the LVE id instead of user name. You can use the “id” command to find out the LVE id.

id $username

Q. How to manage CPU limit?

The option “–speed=N%” is used to manage the CPU speed allocated for a LVE. Please see an example:

List current LVE limits for user crybit

# lvectl list-user|grep crybit
crybit     100       1    1.0G    1.0G      20     100    1024    1024

To reduce CPU speed by 50%

# lvectl set-user crybit --speed=50%
# lvectl list-user|grep crybit
crybit      50       1    1.0G    1.0G      20     100    1024    1024

See the CPU limit reduced to 50 for the user Crybit.

Q. Managing memory limit for LVE?

Here we can use “–pmem=” to manage memory allocation for LVEs.

Please see the example:

# lvectl set-user crybit --pmem=512
# lvectl list-user|grep crybit
crybit      50       1    512K    1.0G      20     100    1024    1024

Likewise, you can manage different LVE parameters using the options –ncpu=N, –io=N, –pmem=N etc..

Q. How to change default setting?

To change the default configuration, please use the following command:

# lvectl set default --speed=100% --pmem=256m

Q. How to reset all LVEs settings based on configuration in /etc/container/ve.cfg?

# lvectl apply all

Q. How to reset all LVE’s killing processes inside them?

# lvectl destroy all

Q. Quick command to list the LVE limits of a particular user (ID)?

Yeah, we already mention how to list the LVE limits of a particular user by using the list-user switch. It’s a simple way to list out the current LVE of a user. First you need to find out the ID of that user using id command.

# id crybit
uid=563(crybit) gid=574(crybit) groups=574(crybit)

563 is the ID of user crybit.

Execute the following command:

# lvectl limits 563
ID    SPEED    NCPU    PMEM    VMEM   EP   NPROC   IO    IOPS
563  100          1    2.0G    0 K    20   0       4096  1024

Cool.. Post a reply if you’ve any questions.

Post navigation

Arunlal A

Senior System Developer at Zeta. Linux lover. Traveller. Let's connect! Whether you're a seasoned DevOps pro or just starting your journey, I'm always eager to engage with like-minded individuals. Follow my blog for regular updates, connect on social media, and let's embark on this DevOps adventure together! Happy coding and deploying!

4 thoughts on “Managing LVE via command line – lvectl

Leave a Reply

Your email address will not be published. Required fields are marked *