W1zzard
10-30-2009, 09:33 AM
<script language="javascript">
function getVal(field)
{
v=document.getElementById(field).value;
if (document.getElementById(field+'K'))
{
if (document.getElementById(field+'K').value=='K')
v=v*1024;
if (document.getElementById(field+'K').value=='M')
v=v*1024*1024;
}
return v;
}
function setResult(field, value)
{
if (value)
{
document.getElementById(field).innerHTML="Aligned";
document.getElementById(field).style.backgroundCol or="#005500";
}
else
{
document.getElementById(field).innerHTML="Misaligned";
document.getElementById(field).style.backgroundCol or="red";
document.getElementById(field).style.backgroundCol or="#990000";
}
}
function update()
{
if (document.getElementById('RAID').checked==false)
{
document.getElementById('raid1').style.display='no ne';
document.getElementById('raid2').style.display='no ne';
document.getElementById('raid3').style.display='no ne';
} else
{
document.getElementById('raid1').style.display='';
document.getElementById('raid2').style.display='';
document.getElementById('raid3').style.display='';
}
var r1Ok;
var r1=getVal('offset') / getVal('pageSize');
if (r1==Math.round(r1)) r1Ok=true; else r1Ok=false;
var r2Ok;
var r2=getVal('offset') / getVal('eraseBlk');
if (r2==Math.round(r2)) r2Ok=true; else r2Ok=false;
var r3Ok;
var r3=getVal('offset') / getVal('allocSize');
if (r3==Math.round(r3)) r3Ok=true; else r3Ok=false;
var r4Ok;
var r4=getVal('offset') / getVal('stripeUnitSize');
if (r4==Math.round(r4)) r4Ok=true; else r4Ok=false;
var r5Ok;
var r5=getVal('stripeUnitSize') / getVal('allocSize');
if (r5==Math.round(r5)) r5Ok=true; else r5Ok=false;
setResult('rule1', r1Ok);
setResult('rule2', r2Ok);
setResult('rule3', r3Ok);
setResult('rule4', r4Ok);
setResult('rule5', r5Ok);
}
function updateSSD()
{
var drive=document.getElementById('driveSel').value.sp lit(";");
if (drive[0]==0)
{
document.getElementById('eraseBlk').disabled=false ;
document.getElementById('eraseBlkK').disabled=fals e;
} else
{
document.getElementById('eraseBlk').disabled=true;
document.getElementById('eraseBlk').value=drive[0];
document.getElementById('eraseBlkK').value='K';
document.getElementById('eraseBlkK').disabled=true ;
}
if (drive[1]==0)
{
document.getElementById('pageSize').disabled=false ;
document.getElementById('pageSizeK').disabled=fals e;
} else
{
document.getElementById('pageSize').disabled=true;
document.getElementById('pageSize').value=drive[1];
document.getElementById('pageSizeK').value='K';
document.getElementById('pageSizeK').disabled=true ;
}
update();
}
function HS(element)
{
if (document.getElementById(element).style.display==' none')
document.getElementById(element).style.display='';
else
document.getElementById(element).style.display='no ne';
}
</script>
<table border="0" cellpadding="6" cellspacing="0" style="font-family:Arial,Helvetica,sans-serif;font-size:12px;border:1px solid #d0d0d0;background-color:#f8f8f8">
<tr>
<td><strong>Partition Offset:</strong></td>
<td><label>
<input name="offset" type="text" id="offset" onKeyUp="update()" value="1048576" size="20" style="width:150px"/>
</label></td>
<td><a href="javascript:HS('offsetHelp')">How to get</a></td>
</tr>
<tr id="offsetHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">Start -> Run -> msinfo32. <br>
In MSInfo:
Components -> Storage -> Disks -> Partition Starting Offset</td>
</tr>
<tr>
<td><strong>File Allocation Unit Size:</strong></td>
<td><input name="allocSize" type="text" id="allocSize" onKeyUp="update()" value="4096" size="10" style="width:78px" />
<label>
<select name="allocSizeK" id="allocSizeK" onChange="update()">
<option value="B" selected>Bytes</option>
<option value="K">KBytes</option>
</select>
</label></td>
<td><a href="javascript:HS('allocSizeHelp')">How to get</a></td>
</tr>
<tr id="allocSizeHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">cmd "fsutil fsinfo ntfsinfo L:" <br />
Where L is the drive letter, listed as "Bytes Per Cluster"</td>
</tr>
<tr>
<td><strong>Select SSD:</strong></td>
<td><select name="driveSel" id="driveSel" onChange="updateSSD()" style="width:150px">
<option value="0;0" selected="selected">Custom</option>
<option value="512;4">G.SKILL Falcon</option>
<option value="512;4">Intel X25-M</option>
<option value="512;4">OCZ (all drives)</option>
<option value="512;4">Patriot Torqx</option>
<option value="512;4">Super Talent Ultra GX</option>
</select></td>
<td> </td>
</tr>
<tr>
<td><strong>NAND Erase Block Size:</strong></td>
<td><input name="eraseBlk" type="text" id="eraseBlk" onKeyUp="update()" value="512" size="10" style="width:78px" />
<select name="eraseBlkK" id="eraseBlkK" onChange="update()">
<option value="B">Bytes</option>
<option value="K" selected>KBytes</option>
</select></td>
<td><a href="javascript:HS('eraseBlkHelp')">How to get</a><br />
<label></label></td>
</tr>
<tr id="eraseBlkHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">From SSD manufacturer</td>
</tr>
<tr>
<td><strong>NAND Page Size:</strong></td>
<td><input name="pageSize" type="text" id="pageSize" onKeyUp="update()" value="4" size="10" style="width:78px" />
<select name="pageSizeK" id="pageSizeK" onChange="update()">
<option value="B">Bytes</option>
<option value="K" selected>KBytes</option>
</select></td>
<td><a href="javascript:HS('pageSizeHelp')">How to get</a></td>
</tr>
<tr id="pageSizeHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">From SSD manufacturer</td>
</tr>
<tr>
<td><strong>Running RAID:</strong></td>
<td><input type="radio" name="RAID" id="RAID" value="1" onClick="update()">
Yes
<input name="RAID" type="radio" id="RAID" value="0" checked="checked" onClick="update()">
No</td>
<td> </td>
</tr>
<tr id="raid1">
<td><strong>Stripe Unit Size:</strong></td>
<td><input name="stripeUnitSize" type="text" id="stripeUnitSize" onKeyUp="update()" value="512" size="10" style="width:78px" />
<select name="stripeUnitSizeK" id="stripeUnitSizeK" onChange="update()">
<option value="B">Bytes</option>
<option value="K" selected>KBytes</option>
</select></td>
<td><a href="javascript:HS('RAIDHelp')">How to get</a></td>
</tr>
<tr id="RAIDHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">Defined when RAID awway was first built</td>
</tr>
</table>
<table border="0" cellpadding="6" cellspacing="0" style="margin-top:10px;font-family:Arial,Helvetica,sans-serif;font-size:12px;border:1px solid #d0d0d0;background-color:#f8f8f8">
<tr>
<td><strong>1)</strong></td>
<td>Partition Offset ÷ NAND Page Size</td>
<td id="rule1" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr>
<td><strong>2)</strong></td>
<td>Partition Offset ÷ NAND Erase Block Size</td>
<td id="rule2" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr>
<td><strong>3)</strong></td>
<td>Partition Offset ÷ File Allocation Unit Size</td>
<td id="rule3" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr id="raid2">
<td><strong>4)</strong></td>
<td>Partition Offset ÷ Stripe Unit Size</td>
<td id="rule4" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr id="raid3">
<td><strong>5)</strong></td>
<td>Stripe Unit Size ÷ File Allocation Unit Size</td>
<td id="rule5" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
</table>
<script language="javascript">update();</script>
The original thread is here (http://forums.techpowerup.com/showthread.php?t=107126).
function getVal(field)
{
v=document.getElementById(field).value;
if (document.getElementById(field+'K'))
{
if (document.getElementById(field+'K').value=='K')
v=v*1024;
if (document.getElementById(field+'K').value=='M')
v=v*1024*1024;
}
return v;
}
function setResult(field, value)
{
if (value)
{
document.getElementById(field).innerHTML="Aligned";
document.getElementById(field).style.backgroundCol or="#005500";
}
else
{
document.getElementById(field).innerHTML="Misaligned";
document.getElementById(field).style.backgroundCol or="red";
document.getElementById(field).style.backgroundCol or="#990000";
}
}
function update()
{
if (document.getElementById('RAID').checked==false)
{
document.getElementById('raid1').style.display='no ne';
document.getElementById('raid2').style.display='no ne';
document.getElementById('raid3').style.display='no ne';
} else
{
document.getElementById('raid1').style.display='';
document.getElementById('raid2').style.display='';
document.getElementById('raid3').style.display='';
}
var r1Ok;
var r1=getVal('offset') / getVal('pageSize');
if (r1==Math.round(r1)) r1Ok=true; else r1Ok=false;
var r2Ok;
var r2=getVal('offset') / getVal('eraseBlk');
if (r2==Math.round(r2)) r2Ok=true; else r2Ok=false;
var r3Ok;
var r3=getVal('offset') / getVal('allocSize');
if (r3==Math.round(r3)) r3Ok=true; else r3Ok=false;
var r4Ok;
var r4=getVal('offset') / getVal('stripeUnitSize');
if (r4==Math.round(r4)) r4Ok=true; else r4Ok=false;
var r5Ok;
var r5=getVal('stripeUnitSize') / getVal('allocSize');
if (r5==Math.round(r5)) r5Ok=true; else r5Ok=false;
setResult('rule1', r1Ok);
setResult('rule2', r2Ok);
setResult('rule3', r3Ok);
setResult('rule4', r4Ok);
setResult('rule5', r5Ok);
}
function updateSSD()
{
var drive=document.getElementById('driveSel').value.sp lit(";");
if (drive[0]==0)
{
document.getElementById('eraseBlk').disabled=false ;
document.getElementById('eraseBlkK').disabled=fals e;
} else
{
document.getElementById('eraseBlk').disabled=true;
document.getElementById('eraseBlk').value=drive[0];
document.getElementById('eraseBlkK').value='K';
document.getElementById('eraseBlkK').disabled=true ;
}
if (drive[1]==0)
{
document.getElementById('pageSize').disabled=false ;
document.getElementById('pageSizeK').disabled=fals e;
} else
{
document.getElementById('pageSize').disabled=true;
document.getElementById('pageSize').value=drive[1];
document.getElementById('pageSizeK').value='K';
document.getElementById('pageSizeK').disabled=true ;
}
update();
}
function HS(element)
{
if (document.getElementById(element).style.display==' none')
document.getElementById(element).style.display='';
else
document.getElementById(element).style.display='no ne';
}
</script>
<table border="0" cellpadding="6" cellspacing="0" style="font-family:Arial,Helvetica,sans-serif;font-size:12px;border:1px solid #d0d0d0;background-color:#f8f8f8">
<tr>
<td><strong>Partition Offset:</strong></td>
<td><label>
<input name="offset" type="text" id="offset" onKeyUp="update()" value="1048576" size="20" style="width:150px"/>
</label></td>
<td><a href="javascript:HS('offsetHelp')">How to get</a></td>
</tr>
<tr id="offsetHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">Start -> Run -> msinfo32. <br>
In MSInfo:
Components -> Storage -> Disks -> Partition Starting Offset</td>
</tr>
<tr>
<td><strong>File Allocation Unit Size:</strong></td>
<td><input name="allocSize" type="text" id="allocSize" onKeyUp="update()" value="4096" size="10" style="width:78px" />
<label>
<select name="allocSizeK" id="allocSizeK" onChange="update()">
<option value="B" selected>Bytes</option>
<option value="K">KBytes</option>
</select>
</label></td>
<td><a href="javascript:HS('allocSizeHelp')">How to get</a></td>
</tr>
<tr id="allocSizeHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">cmd "fsutil fsinfo ntfsinfo L:" <br />
Where L is the drive letter, listed as "Bytes Per Cluster"</td>
</tr>
<tr>
<td><strong>Select SSD:</strong></td>
<td><select name="driveSel" id="driveSel" onChange="updateSSD()" style="width:150px">
<option value="0;0" selected="selected">Custom</option>
<option value="512;4">G.SKILL Falcon</option>
<option value="512;4">Intel X25-M</option>
<option value="512;4">OCZ (all drives)</option>
<option value="512;4">Patriot Torqx</option>
<option value="512;4">Super Talent Ultra GX</option>
</select></td>
<td> </td>
</tr>
<tr>
<td><strong>NAND Erase Block Size:</strong></td>
<td><input name="eraseBlk" type="text" id="eraseBlk" onKeyUp="update()" value="512" size="10" style="width:78px" />
<select name="eraseBlkK" id="eraseBlkK" onChange="update()">
<option value="B">Bytes</option>
<option value="K" selected>KBytes</option>
</select></td>
<td><a href="javascript:HS('eraseBlkHelp')">How to get</a><br />
<label></label></td>
</tr>
<tr id="eraseBlkHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">From SSD manufacturer</td>
</tr>
<tr>
<td><strong>NAND Page Size:</strong></td>
<td><input name="pageSize" type="text" id="pageSize" onKeyUp="update()" value="4" size="10" style="width:78px" />
<select name="pageSizeK" id="pageSizeK" onChange="update()">
<option value="B">Bytes</option>
<option value="K" selected>KBytes</option>
</select></td>
<td><a href="javascript:HS('pageSizeHelp')">How to get</a></td>
</tr>
<tr id="pageSizeHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">From SSD manufacturer</td>
</tr>
<tr>
<td><strong>Running RAID:</strong></td>
<td><input type="radio" name="RAID" id="RAID" value="1" onClick="update()">
Yes
<input name="RAID" type="radio" id="RAID" value="0" checked="checked" onClick="update()">
No</td>
<td> </td>
</tr>
<tr id="raid1">
<td><strong>Stripe Unit Size:</strong></td>
<td><input name="stripeUnitSize" type="text" id="stripeUnitSize" onKeyUp="update()" value="512" size="10" style="width:78px" />
<select name="stripeUnitSizeK" id="stripeUnitSizeK" onChange="update()">
<option value="B">Bytes</option>
<option value="K" selected>KBytes</option>
</select></td>
<td><a href="javascript:HS('RAIDHelp')">How to get</a></td>
</tr>
<tr id="RAIDHelp" style="display:none">
<td colspan="3" style="padding-left:20px;background-color:#eee">Defined when RAID awway was first built</td>
</tr>
</table>
<table border="0" cellpadding="6" cellspacing="0" style="margin-top:10px;font-family:Arial,Helvetica,sans-serif;font-size:12px;border:1px solid #d0d0d0;background-color:#f8f8f8">
<tr>
<td><strong>1)</strong></td>
<td>Partition Offset ÷ NAND Page Size</td>
<td id="rule1" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr>
<td><strong>2)</strong></td>
<td>Partition Offset ÷ NAND Erase Block Size</td>
<td id="rule2" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr>
<td><strong>3)</strong></td>
<td>Partition Offset ÷ File Allocation Unit Size</td>
<td id="rule3" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr id="raid2">
<td><strong>4)</strong></td>
<td>Partition Offset ÷ Stripe Unit Size</td>
<td id="rule4" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
<tr id="raid3">
<td><strong>5)</strong></td>
<td>Stripe Unit Size ÷ File Allocation Unit Size</td>
<td id="rule5" style="color:#eeeeee;font-size:13pt;font-weight:bold"> </td>
</tr>
</table>
<script language="javascript">update();</script>
The original thread is here (http://forums.techpowerup.com/showthread.php?t=107126).