aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabor Pali <pgj@FreeBSD.org>2013-09-09 16:05:59 +0000
committerGabor Pali <pgj@FreeBSD.org>2013-09-09 16:05:59 +0000
commit31078a2f3f3e3fe07a72f86e10c26c086766a304 (patch)
tree640adbfc6f9456da8643ba51d326f68ec7e00a5b
parenta86a8a44d16c053206ef58957e4bd47290ceb162 (diff)
downloaddoc-31078a2f3f3e3fe07a72f86e10c26c086766a304.tar.gz
doc-31078a2f3f3e3fe07a72f86e10c26c086766a304.zip
- Add Q3 reports on static code analysis [1] and CAM locking [2]
Submitted by: uqs [1], mav [2]
Notes
Notes: svn path=/head/; revision=42634
-rw-r--r--en_US.ISO8859-1/htdocs/news/status/report-2013-07-2013-09.xml130
1 files changed, 129 insertions, 1 deletions
diff --git a/en_US.ISO8859-1/htdocs/news/status/report-2013-07-2013-09.xml b/en_US.ISO8859-1/htdocs/news/status/report-2013-07-2013-09.xml
index a1f018168b..cc9d2eac5d 100644
--- a/en_US.ISO8859-1/htdocs/news/status/report-2013-07-2013-09.xml
+++ b/en_US.ISO8859-1/htdocs/news/status/report-2013-07-2013-09.xml
@@ -19,7 +19,7 @@
<!-- XXX: keep updating the number of entries -->
<p>Thanks to all the reporters for the excellent work! This report
- contains 1 entries and we hope you enjoy reading it.</p>
+ contains 3 entries and we hope you enjoy reading it.</p>
<!-- XXX: set date for the next set of submissions -->
<p>The deadline for submissions covering between October and
@@ -27,6 +27,12 @@
</section>
<category>
+ <name>proj</name>
+
+ <description>Projects</description>
+ </category>
+
+ <category>
<name>kern</name>
<description>Kernel</description>
@@ -60,4 +66,126 @@
framework and <tt>crypto(4)</tt>.</p>
</body>
</project>
+
+ <project cat='proj'>
+ <title>Static Code Analysis</title>
+
+ <contact>
+ <person>
+ <name>
+ <given>Ulrich</given>
+ <common>Spoerlein</common>
+ </name>
+ <email>uqs@FreeBSD.org</email>
+ </person>
+ </contact>
+
+ <links>
+ <url href="http://scan.coverity.com/">Coverity Scan</url>
+ <url href="http://scan.freebsd.your.org/">Clang Static Analyzer Scan for &os;</url>
+ <url href="http://clang-analyzer.llvm.org/">Clang Static Analyzer Home Page</url>
+ </links>
+
+ <body>
+ <p>With our own (old and unstable) instance of Coverity Prevent
+ gone, we have now fully transitioned to the Scan project run by
+ Coverity (see links), which Open Source projects can use to
+ learn about possible defects in their source code.</p>
+
+ <p>We also continue to run our code base through the Static
+ Analyzer that is shipped with Clang/LLVM. It cannot track the
+ state of the code over time, but has the benefit that everyone
+ can use it without any special setup. See the home page at the
+ links section for more information on the Clang Static Analyzer
+ project in general, and head over to the &os; Clang Static
+ Analyzer Scan page (see links) to see those possible defects (no
+ signup required).</p>
+
+ <p>We are looking for a co-admin for both of these projects to
+ increase the bus-factor and the chance of survival for these
+ services. Fame and fortune await!</p>
+ </body>
+
+ <help>
+ <task>Maybe turn on email reports for new defects to the internal
+ list of &os; developers.</task>
+
+ <task>Find co-admin.</task>
+
+ <task>Fix the defects reported by Coverity and Clang.</task>
+ </help>
+ </project>
+
+ <project cat='kern'>
+ <title>GEOM Direct Dispatch and Fine-Grained CAM Locking</title>
+
+ <contact>
+ <person>
+ <name>
+ <given>Alexander</given>
+ <common>Motin</common>
+ </name>
+ <email>mav@FreeBSD.org</email>
+ </person>
+ </contact>
+
+ <links>
+ <url href="http://svnweb.freebsd.org/base/projects/camlock/">Project SVN branch</url>
+ <url href="http://people.freebsd.org/~mav/camlock_patches/">Project patches</url>
+ </links>
+
+ <body>
+ <p>Last year's high-performance storage vendors reported
+ performance bottleneck in &os; block storage subsystem, limiting
+ peak performance around 300-500K IOPS. While that is still more
+ then enough for average systems, detailed investigation has
+ shown number of places that require radical improvement.
+ Unmapped I/O support implemented early this year already
+ improved I/O performance by about 30% and moved more accents
+ toward GEOM and CAM subsystems scalability. Fixing these issues
+ was the goal of this project.</p>
+
+ <p>The existing GEOM design assumed the most of I/O handling to be
+ done by only two kernel threads (<tt>g_up()</tt> and
+ <tt>g_down()</tt>). That simplified locking in some cases, but
+ limited potential SMP scalability and created additional
+ scheduler overhead. This project introduces concept of direct
+ I/O dispatch into GEOM for cases where it is know to be safe and
+ efficient. That implies marking some of GEOM consumers and
+ providers with one or two new flags, declaring situations when
+ direct function call can be used instead of normal request
+ queuing. That allows to avoid any context switches inside GEOM
+ for the most widely used topologies, simultaneously processing
+ multiple I/Os from multiple calling threads.</p>
+
+ <p>Having GEOM passing through multiple concurrent calls down to
+ the underlying layers exposed major lock congestion in CAM. In
+ existing CAM design all devices connected to the same ATA/SCSI
+ controller are sharing single lock, which can be quite busy due
+ to multiple controller hardware accesses and/or code logic.
+ Experiments have shown that applying only above GEOM direct
+ dispatch changes burns up to 60% of system CPU time or even more
+ in attempts to obtain these locks by multiple callers, killing
+ any benefits of GEOM direct dispatch. To overcome that new
+ fine-grained CAM locking design was implemented. It implies
+ splitting big per-SIM locks into several smaller ones: per-LUN
+ locks, per-bus locks, queue locks, etc. After these changes
+ remaining per-SIM lock protects only controller driver
+ internals, reducing lock congestion down to acceptable level and
+ allowing to keep compatibility with existing drivers.</p>
+
+ <p>Together GEOM and CAM changes twice increase peak I/O rate,
+ reaching up to 1,000,000 IOPS on contemporary hardware.</p>
+
+ <p>The changes were tested by number of people and are going to be
+ committed into &os; <tt>head</tt> and merged to
+ <tt>stable/10</tt> after the end of &os; 10.0 release cycle.</p>
+
+ <p>The project is sponsored by iXsystems, Inc.</p>
+ </body>
+
+ <help>
+ <task>More reviews, more stability and performance tests.</task>
+ </help>
+ </project>
</report>