You will receive access to a new repository with the initial API design from another team. Your task is to review it. This task is done individually, which means that you will receive two reviews for your own design.

Review format

The task is split in two parts. In the first part, you are expected to create an (additional) example application using the provided API. In the second part, you are expected to summarize your API review in several paragraphs of text (not a bullet list).

Example application

Implement skeleton for application numactl (man page). The purpose of the task is to learn the new API, not implementing NUMA features. Therefore, the expected skeleton of your application is the following:

args = ... // configure the arguments
args.parse(argv)
if args.has("--show"):
   printf("policy: default"); print("...")
elif args.has("--hardware"):
   printf("available: 2 nodes (0-1)"); print("...")
elif:
   printf("will run %s", args.get_command())
   printf("CPU node bind: %s", args.get("-C").join(","))
   ...

Your example must support following styles of invocation:

  • Without any parameters, the program shall print help.
  • With --hardware, it shall emulate printing current hardware configuration.
  • With --show, it shall emulate printing current NUMA policy.
  • With options -m, -p, -i and -C it shall emulate running a program with modified NUMA policy.

See slides for further examples.

Review outline

Your review should adhere to the following (rough) outline:

  • overall impression of the library (1-2 paragrahs)
  • notes on writing numactl (1-2 paragraphs) [what was easy, what proved to be impossible etc.]
  • other notes regarding completeness etc. of the library [use checklist from slides]

Submission

Submit your work (the numactl snippet and the comments) in a single markdown text file placed in the root directory of your repository and name it REVIEW.md.