http://wiki.old.lustre.org/index.php?title=Architecture_-_Commit_on_Share&feed=atom&action=history
Architecture - Commit on Share - Revision history
2024-03-29T12:20:34Z
Revision history for this page on the wiki
MediaWiki 1.35.5
http://wiki.old.lustre.org/index.php?title=Architecture_-_Commit_on_Share&diff=10567&oldid=prev
Docadmin at 21:00, 22 January 2010
2010-01-22T21:00:58Z
<p></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:00, 22 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>'''''Note:''''' The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information. </div></td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>'''''Note:<ins class="diffchange diffchange-inline">''</ins>''' ''The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information.<ins class="diffchange diffchange-inline">'' </ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td></tr>
</table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Commit_on_Share&diff=10480&oldid=prev
Docadmin: Protected "Architecture - Commit on Share" ([edit=sysop] (indefinite) [move=sysop] (indefinite))
2010-01-21T19:15:51Z
<p>Protected "<a href="/index.php?title=Architecture_-_Commit_on_Share" title="Architecture - Commit on Share">Architecture - Commit on Share</a>" ([edit=sysop] (indefinite) [move=sysop] (indefinite))</p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 19:15, 21 January 2010</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Commit_on_Share&diff=10113&oldid=prev
Docadmin at 23:55, 18 January 2010
2010-01-18T23:55:11Z
<p></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 23:55, 18 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l1" >Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">'''''Note:''''' The content on this page reflects the state of design of a Lustre feature at a particular point in time and may contain outdated information. </ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>== Summary ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Commit_on_Share&diff=9886&oldid=prev
Docadmin: /* Questions */
2010-01-14T22:05:27Z
<p><span dir="auto"><span class="autocomment">Questions</span></span></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 22:05, 14 January 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l289" >Line 289:</td>
<td colspan="2" class="diff-lineno">Line 289:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* runtime control?</div></td><td class='diff-marker'> </td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>* runtime control?</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>−</td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">[[Category:Architecture|Commit on Share]]</del></div></td><td colspan="2"> </td></tr>
</table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Commit_on_Share&diff=9871&oldid=prev
Docadmin: moved Commit on Share to Architecture - Commit on Share
2010-01-14T21:52:57Z
<p>moved <a href="/index.php?title=Commit_on_Share&action=edit&redlink=1" class="new" title="Commit on Share (page does not exist)">Commit on Share</a> to <a href="/index.php?title=Architecture_-_Commit_on_Share" title="Architecture - Commit on Share">Architecture - Commit on Share</a></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<tr class="diff-title" lang="en">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 21:52, 14 January 2010</td>
</tr><tr><td colspan="2" class="diff-notice" lang="en"><div class="mw-diff-empty">(No difference)</div>
</td></tr></table>
Docadmin
http://wiki.old.lustre.org/index.php?title=Architecture_-_Commit_on_Share&diff=9808&oldid=prev
Docadmin: 1 revision
2010-01-14T21:01:09Z
<p>1 revision</p>
<p><b>New page</b></p><div>== Summary ==<br />
<br />
Commit-on-Share is intended to allow better recoverability in enviroment where clients miss reconnect window.<br />
<br />
== Definitions ==<br />
<br />
; '''Dependent transactions''': Two transactions are dependent if the second one cannot be executed until the first one is executed.<br />
; '''Isolation''': defines level to which we consider transactions dependent:<br />
* per-object -- all changes to same object are considered dependent,<br />
* fine-grained -- some changes to same object are considered independent.<br />
;'''Uncommitted object''': an object with changes cached and non-committed to disk.<br />
; '''Dependency resolution''': remove request from replay queue committing it to persistent storage<br />
<br />
== Requirements ==<br />
<br />
# Provide with mechanism to avoid non-recoverable requests .<br />
# Mechanism to be optional (runtime???) in order to allow users to choose between performance and reliability.<br />
# No changes in wire protocol are allowed.<br />
# Provide compatibility for old clients.<br />
<br />
== Use Cases ==<br />
<br />
<br />
{| cellspacing="0" border="1"<br />
! ID !! Quality Attribute !! Summary<br />
|-<br />
| dependent request from same client<br />
| performance<br />
| performance shouldn't suffer with COS enabled<br />
|-<br />
| independent request from different client<br />
| performance<br />
| performance shouldn't suffer with COS enabled<br />
|-<br />
| dependent request from different client<br />
| availability<br />
| no dependency allowed after request execution, must be resolved before<br />
|-<br />
| set of independent requests<br />
| availability, performance<br />
| with fine-grained isolation request can be independent from all except some one<br />
|-<br />
| commit<br />
| availability, performance<br />
| commit event <br />
|-<br />
| CoS enable<br />
| usability<br />
| when and how we can enable CoS<br />
|-<br />
| CoS disable<br />
| usability<br />
| when and how we can disable CoS<br />
|}<br />
<br />
== Quality Attribute Scenarios ==<br />
<br />
=== Dependent request from same client ===<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || Dependent request from same client<br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || application's performance doesn't drop<br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| performance<br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| application<br />
|-align="left"<br />
| '''Stimulus:'''|| request modifying file system<br />
|-align="left"<br />
|'''Environment:'''|| object has non-committed modification and new request depends on that<br />
|-align="left"<br />
|'''Artifact:'''|| a record for dependency tracker<br />
|-align="left"<br />
|'''Response:'''|| immediate execution, no dependency resolution is required<br />
|-align="left"<br />
|'''Response measure:'''|| roughly same performance as with COS disabled<br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| <br />
|-align="left"<br />
|-<br />
|}<br />
<br />
<br />
=== Independent request from different client ===<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || Independent request from different client<br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || application's performance doesn't drop<br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| performance<br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| application<br />
|-align="left"<br />
| '''Stimulus:'''|| request modifying file system<br />
|-align="left"<br />
|'''Environment:'''|| object has no modifications which new request depends on<br />
|-align="left"<br />
|'''Artifact:'''|| a record for dependency tracker<br />
|-align="left"<br />
|'''Response:'''|| immediate execution, no dependency resolution required<br />
|-align="left"<br />
|'''Response measure:'''|| roughly same performance as with COS disabled<br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| <br />
|-align="left"<br />
|-<br />
|}<br />
<br />
=== Dependent request from different client ===<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || Dependent request from different client<br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || prevent recovery failure if client doesn't re-connect in time<br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| availablity<br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| application<br />
|-align="left"<br />
| '''Stimulus:'''|| request modifying file system<br />
|-align="left"<br />
|'''Environment:'''|| object has non-committed modification and new request depends on that<br />
|-align="left"<br />
|'''Artifact:'''|| old dependency records are released, new one is created<br />
|-align="left"<br />
|'''Response:'''|| server resolves dependency flushing non-committed changes and suspend current operation till commit event<br />
|-align="left"<br />
|'''Response measure:'''|| performance degrades compared non-CoS<br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| <br />
|-align="left"<br />
|-<br />
|}<br />
<br />
=== Set of independent requests ===<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || Set of independent requests<br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || Allow few independent requests against same object to co-exist<br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| performance, availability<br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| application<br />
|-align="left"<br />
| '''Stimulus:'''|| few requests modifying file system<br />
|-align="left"<br />
|'''Environment:'''|| few clients issue requests against same object <br />
|-align="left"<br />
|'''Artifact:'''|| few records for dependency tracker<br />
|-align="left"<br />
|'''Response:'''|| immediate execution, no dependency resolution required, but each request should be checked it doesn't depend on any request from the set<br />
|-align="left"<br />
|'''Response measure:'''|| performance doesn't degrade significantly<br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| is it really a requirement for current CoS?<br />
|-align="left"<br />
|-<br />
|}<br />
<br />
=== Commit ===<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || Commit<br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || Block dependent operations for as short as possible<br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| availability, performance<br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| underlying disk file system<br />
|-align="left"<br />
| '''Stimulus:'''|| all previous changes are committed to storage<br />
|-align="left"<br />
|'''Environment:'''|| <br />
|-align="left"<br />
|'''Artifact:'''|| all dependencies become resolved<br />
|-align="left"<br />
|'''Response:'''|| dependency tracker get new "committed" border and continue suspended operations<br />
|-align="left"<br />
|'''Response measure:'''|| Dependency tables don't grow indefinitely<br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| <br />
|-align="left"<br />
|-<br />
|}<br />
<br />
=== CoS enable ===<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || CoS enable<br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || allow customers to control CoS<br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| usability<br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| administrator<br />
|-align="left"<br />
| '''Stimulus:'''|| request through control utility and/or procfs<br />
|-align="left"<br />
|'''Environment:'''|| CoS is disabled<br />
|-align="left"<br />
|'''Artifact:'''|| per-server flag enabling CoS<br />
|-align="left"<br />
|'''Response:'''|| since now dependency tracker checks whether coming operation depends on any uncommitted ones<br />
|-align="left"<br />
|'''Response measure:'''|| dependent operations are slow, but recovery during the server's reconnect window is guaranteed to succeed<br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| do we need this run-time? if so, we need to take care of possible races here<br />
|-align="left"<br />
|-<br />
|}<br />
<br />
=== CoS disable ===<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || CoS disable<br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || Allow customers to control CoS<br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| usability<br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| administrator<br />
|-align="left"<br />
| '''Stimulus:'''|| request through control utility and/or procfs<br />
|-align="left"<br />
|'''Environment:'''|| CoS is enabled<br />
|-align="left"<br />
|'''Artifact:'''|| per-server flag disabling CoS<br />
|-align="left"<br />
|'''Response:'''|| dependency tracker considers all operations independent since now<br />
|-align="left"<br />
|'''Response measure:'''|| dependent operations are fast, but recovery failure is possible in case of missed client<br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| do we need this run-time?<br />
|-align="left"<br />
|-<br />
|}<br />
<br />
<br />
; '''QAS template'''<br />
<br />
{|border=1 cellspacing="0"<br />
|-align="left" <br />
|colspan=2|'''Scenario:''' || <br />
|-align="left" <br />
|colspan=2|'''Business Goals:''' || <br />
|-align="left" <br />
|colspan=2|'''Relevant QA's:'''|| <br />
|-align="left"<br />
|rowspan="6" writing-mode="vertical"|'''details'''<br />
|'''Stimulus source:'''|| <br />
|-align="left"<br />
| '''Stimulus:'''|| <br />
|-align="left"<br />
|'''Environment:'''|| <br />
|-align="left"<br />
|'''Artifact:'''|| <br />
|-align="left"<br />
|'''Response:'''|| <br />
|-align="left"<br />
|'''Response measure:'''|| <br />
|-align="left"<br />
|colspan=2|'''Questions:'''|| <br />
|-align="left"<br />
|-<br />
|}<br />
<br />
== Memos for HLD ==<br />
<br />
# is it possible to cancel client's lock and do sync in parallel?<br />
<br />
== Questions ==<br />
<br />
* runtime control?<br />
<br />
<br />
<br />
[[Category:Architecture|Commit on Share]]</div>
Docadmin