<feed xmlns='http://www.w3.org/2005/Atom'>
<title>liblitmus.git/src/migration.c, branch wip-shared-mem</title>
<subtitle>[ARCHIVE] The userspace library for LITMUS^RT 2010. Now on GitHub.</subtitle>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/liblitmus.git/'/>
<entry>
<title>read_mapping() breaks on NR_CPUS not div by 32</title>
<updated>2014-06-06T17:23:37+00:00</updated>
<author>
<name>Glenn Elliott</name>
<email>gelliott@cs.unc.edu</email>
</author>
<published>2014-06-06T17:23:37+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/liblitmus.git/commit/?id=aabfa10d86f2be6416eabedd03f52b548379f2d6'/>
<id>aabfa10d86f2be6416eabedd03f52b548379f2d6</id>
<content type='text'>
This patch fixes a bug in read_mapping(), which is used for
reading CPU and cluster (domain) mappings. read_mapping()
did not account for the case when NR_CPUS is not evenly
divisible by 32 (quite common when NR_CPUS &lt; 32).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes a bug in read_mapping(), which is used for
reading CPU and cluster (domain) mappings. read_mapping()
did not account for the case when NR_CPUS is not evenly
divisible by 32 (quite common when NR_CPUS &lt; 32).
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove unneeded code from domain migration.</title>
<updated>2014-06-06T16:16:36+00:00</updated>
<author>
<name>Glenn Elliott</name>
<email>gelliott@cs.unc.edu</email>
</author>
<published>2014-06-06T16:16:36+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/liblitmus.git/commit/?id=963d692458fdcd87dabe599d92b70f67a4c15f0b'/>
<id>963d692458fdcd87dabe599d92b70f67a4c15f0b</id>
<content type='text'>
This patch removes unneeded code from be_migrate_thread_to_domain().
This function no longer needs to check the number of online
CPUs since the CPU mask for a given domain is now returned directly
from read_mapping().
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch removes unneeded code from be_migrate_thread_to_domain().
This function no longer needs to check the number of online
CPUs since the CPU mask for a given domain is now returned directly
from read_mapping().
</pre>
</div>
</content>
</entry>
<entry>
<title>Migration: Support systems with more than 32 CPUs.</title>
<updated>2014-05-20T01:06:08+00:00</updated>
<author>
<name>Glenn Elliott</name>
<email>gelliott@cs.unc.edu</email>
</author>
<published>2014-05-20T01:06:08+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/liblitmus.git/commit/?id=5f2866d43d9a2e33bc2961edf9966cad5708cc4d'/>
<id>5f2866d43d9a2e33bc2961edf9966cad5708cc4d</id>
<content type='text'>
This patch improves the cpu bit map parsing used to determine
CPU/cluster mapping. Namely, it supports clusters with more
than 32 CPUs. Prior to this patch, mapping would fail due to
unexpected commas in bitfield data read from /proc (groups
of 32 CPUs are separated by commas).

NOTE: Bug could still be encountered if NR_CPUS &gt; 32.

New CPU limit: 4096.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch improves the cpu bit map parsing used to determine
CPU/cluster mapping. Namely, it supports clusters with more
than 32 CPUs. Prior to this patch, mapping would fail due to
unexpected commas in bitfield data read from /proc (groups
of 32 CPUs are separated by commas).

NOTE: Bug could still be encountered if NR_CPUS &gt; 32.

New CPU limit: 4096.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use /proc/litmus/domains to set up affinity masks</title>
<updated>2014-02-24T19:01:11+00:00</updated>
<author>
<name>Glenn Elliott</name>
<email>gelliott@cs.unc.edu</email>
</author>
<published>2014-02-05T05:31:08+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/liblitmus.git/commit/?id=1f323b00f95c4704cdeea7918853f1e9e8d26c2e'/>
<id>1f323b00f95c4704cdeea7918853f1e9e8d26c2e</id>
<content type='text'>
This patch replaces the algorithm used to compute CPU affinity masks.
The old algorithm was fragile and would break on systems with multiple
levels of shared caches. (As found on some older Intel chips, and as
one would probably find on a system with hyper-threading enabled.) The
bug stems from fact that Linux enumerates consecutive CPUs in a way
that distributes them across the physical system, thereby reducing
contention resources (e.g., cache).

Cluster size no longer needs to be provided now that cluster/CPU
mappings are explicit in /proc/litmus/domains/.

This keeps the following migration functions, but marks them as
deprecated:
  - be_migrate_to_cluster()
  - cluster_to_first_cpu()
  - partition_to_cpu()

Although the deprecated interfaces are supported, the implementations
for these functions call the new be_migrate_to_domain() and
domain_to_first_cpu() functions.

[bbb: resolved several merge conflicts]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch replaces the algorithm used to compute CPU affinity masks.
The old algorithm was fragile and would break on systems with multiple
levels of shared caches. (As found on some older Intel chips, and as
one would probably find on a system with hyper-threading enabled.) The
bug stems from fact that Linux enumerates consecutive CPUs in a way
that distributes them across the physical system, thereby reducing
contention resources (e.g., cache).

Cluster size no longer needs to be provided now that cluster/CPU
mappings are explicit in /proc/litmus/domains/.

This keeps the following migration functions, but marks them as
deprecated:
  - be_migrate_to_cluster()
  - cluster_to_first_cpu()
  - partition_to_cpu()

Although the deprecated interfaces are supported, the implementations
for these functions call the new be_migrate_to_domain() and
domain_to_first_cpu() functions.

[bbb: resolved several merge conflicts]
</pre>
</div>
</content>
</entry>
<entry>
<title>User large enough buffer to read /proc/litmus/release_master</title>
<updated>2013-07-02T07:03:05+00:00</updated>
<author>
<name>Hiroyuki Chishiro</name>
<email>chishiro@cs.unc.edu</email>
</author>
<published>2013-07-02T07:03:05+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/liblitmus.git/commit/?id=5e1cee01ba46cffef72bae9c98d025a1c6cf7011'/>
<id>5e1cee01ba46cffef72bae9c98d025a1c6cf7011</id>
<content type='text'>
The string 'NO_CPU' needs to fit into the buffer.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The string 'NO_CPU' needs to fit into the buffer.
</pre>
</div>
</content>
</entry>
<entry>
<title>Auto-CPU-affinity from part./cluster assignment.</title>
<updated>2013-03-12T16:02:20+00:00</updated>
<author>
<name>Glenn Elliott</name>
<email>gelliott@cs.unc.edu</email>
</author>
<published>2013-03-12T15:57:42+00:00</published>
<link rel='alternate' type='text/html' href='http://rtsrv.cs.unc.edu/cgit/cgit.cgi/liblitmus.git/commit/?id=93ffe5be8fd1954bbfe5a04e55b81ac1d83d2de7'/>
<id>93ffe5be8fd1954bbfe5a04e55b81ac1d83d2de7</id>
<content type='text'>
This patch replaces be_migrate_to() with several
be_migrate_*() APIs to automatically assign CPU affinity
masks from a task's partition (or cluster) assignment.
Routines are release-master-aware such that the release
master (if one exists) will NOT be included in the
task's affinity mask. (Note that release-master
avoidance may be overridden by calling
__be_migrate_thread_to_cluster().)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch replaces be_migrate_to() with several
be_migrate_*() APIs to automatically assign CPU affinity
masks from a task's partition (or cluster) assignment.
Routines are release-master-aware such that the release
master (if one exists) will NOT be included in the
task's affinity mask. (Note that release-master
avoidance may be overridden by calling
__be_migrate_thread_to_cluster().)
</pre>
</div>
</content>
</entry>
</feed>
