Re: [dpdk-dev] [v2 PATCH] usertools: show valid hugepage sizes if user requests an invalid hugepage size
From: Stephen Hemminger <stephen@networkplumber.org>
Date: 2021-02-08 22:12:20
On Fri, 05 Feb 2021 19:17:52 +0100 Thomas Monjalon [off-list ref] wrote:
02/12/2020 12:06, Sarosh Arif:quoted
If user requests a hugepage size which is not supported by the system, currently user gets an error message saying that the requested size is not a valid system huge page size. In addition to this if we display the valid hugepage sizes it will be convenient for the user to request the right size next time. Signed-off-by: Sarosh Arif <redacted> --- v2: pass string in sys.exit() to remove pylint warningStephen, is this version OK?
This looks good.
quoted
+def get_valid_page_sizes(path): + valid_page_sizes = "" + hugepage_dir_path = os.path.split(path)[0]Sorry for not following. Why this split? Maybe add a comment?
Guess the code here is using split ad equivalent of dirname() on the path. The path is the string which holds the full filename of the attempted write to sysfs. So this is to get the directory part which could be numa or non-numa.
quoted
+ hugepage_dirs = os.listdir(hugepage_dir_path) + for each_dir in hugepage_dirs: + hugepage_size = each_dir.split("-")[1] + valid_page_sizes = valid_page_sizes + " " + hugepage_sizeWhy not using += here?
Should work. Overall, this reads a bit like C code here. A python wizard would use list comprehensions here https://docs.python.org/2/tutorial/datastructures.html#list-comprehensions
quoted
+ return valid_page_sizes def set_hugepages(path, pages): '''Write the number of reserved huge pages'''@@ -59,10 +67,8 @@ def set_hugepages(path, pages): except PermissionError: sys.exit('Permission denied: need to be root!') except FileNotFoundError: - filename = os.path.basename(path) - size = filename[10:] - sys.exit('{} is not a valid system huge page size'.format(size)) - + sys.exit("Invalid page size. Valid page sizes: {}".format( + get_valid_page_sizes(path)))