Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Toggling Linux CPU affinity masks from SBCL
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
SB-CPU-AFFINITY is a simple API to Linux scheduler affinity masks for SBCL. See documentation of symbols exported from SB-CPU-AFFINITY package. Author: Nikodemus Siivola <email@example.com> License: MIT-style. See file LICENSE for details. Bugs and Issues: Currently each call to GET-CPU-AFFINITY-MASK (and WITH-CPU-AFFINITY-MASK) mallocs 128 bytes of memory for the mask, which is never freed by the system -- at least not on the Lisp side: freeing this memory causes glibc to complain about a double-free, and breaks SBCL. Patches and/or explantions for this welcome. Usage example: (asdf:oos 'asdf:load-op :sb-cpu-affinity) (use-package :sb-cpu-affinity) (with-cpu-affinity-mask (mask) (print mask)) (with-cpu-affinity-mask (mask :save t) ;; Remove all (clear-cpu-affinity-mask mask) ;; Set CPU 0. (setf (cpu-affinity-p 0 mask) t)) (with-cpu-affinity-mask (mask) (print mask)) (with-cpu-affinity-mask (mask :save t) ;; Only odd CPUs in mask. (dotimes (cpu (cpu-count)) (setf (cpu-affinity-p cpu mask) (oddp cpu)))) (with-cpu-affinity-mask (mask) (print mask))