Различия
Здесь показаны различия между двумя версиями данной страницы.
калькулятор_надежности_ssd [2022/10/17 09:37] dyakoff создано |
калькулятор_надежности_ssd [2022/10/17 09:43] (текущий) dyakoff [Дополнительная информация] |
||
---|---|---|---|
Строка 7: | Строка 7: | ||
| Категории: [[:Главная|]] | | | Категории: [[:Главная|]] | | ||
|| | || | ||
+ | <html> | ||
+ | <div> | ||
+ | | ||
+ | <div property="schema:text" class="uk-margin"><script> | ||
+ | <!--//--><![CDATA[// ><!-- | ||
+ | function copyresult(el) { | ||
+ | el.select(); | ||
+ | document.execCommand("copy"); | ||
+ | } | ||
+ | function ssdconvert(el){ | ||
+ | var s = document.getElementById('ssd_size').value; | ||
+ | if (isInt(s)) { | ||
+ | s = parseInt(s, 10); | ||
+ | if (s < 1 || s > 9999999) return ssdresult(el, "Укажите ёмкость в гигабайтах. Целое число от 1 до 9999999."); | ||
+ | } else { | ||
+ | return ssdresult(el, "Укажите ёмкость в гигабайтах."); | ||
+ | } | ||
+ | var t = document.getElementById('ssd_warranty').value; | ||
+ | if (isInt(t)) { | ||
+ | t = parseInt(t, 10); | ||
+ | if (t < 1 || t > 99) return ssdresult(el, "Укажите гарантию в годах. Целое число от 1 до 99."); | ||
+ | } else { | ||
+ | return ssdresult(el, "Укажите гарантию в годах."); | ||
+ | } | ||
+ | var e = document.getElementById('ssd_endurance').value; | ||
+ | if (isFloat(e)) { | ||
+ | e = parseFloat(e); | ||
+ | if (e <= 0 || e > 9999999) return ssdresult(el, "Укажите надёжность SSD. Число с плавающей точкой больше 0 и не больше 9999999."); | ||
+ | } else { | ||
+ | return ssdresult(el, "Укажите надёжность SSD."); | ||
+ | } | ||
+ | var et = document.getElementById('ssd_endurance_type').value; | ||
+ | switch (et) { | ||
+ | case "pbw": | ||
+ | return ssdresult(el, calc_pbw(e, s, t)); | ||
+ | break; | ||
+ | case "tbw": | ||
+ | return ssdresult(el, calc_tbw(e, s, t)); | ||
+ | break; | ||
+ | case "dwpd": | ||
+ | return ssdresult(el, calc_dwpd(e, s, t)); | ||
+ | break; | ||
+ | case "gbday": | ||
+ | return ssdresult(el, calc_gbday(e, s, t)); | ||
+ | break; | ||
+ | default: | ||
+ | return ssdresult(el, "Укажите надёжность SSD. Выберите тип."); | ||
+ | } | ||
+ | return ssdresult(el, "Непредвиденная ошибка"); | ||
+ | } | ||
+ | function ssdresult(el, tx){ | ||
+ | el.value = tx; | ||
+ | } | ||
+ | function isInt(value) { | ||
+ | var er = /^-?[0-9]+$/; | ||
+ | return er.test(value); | ||
+ | } | ||
+ | function isFloat(value) { | ||
+ | var er = /^-?[0-9.]+$/; | ||
+ | return er.test(value); | ||
+ | } | ||
+ | function calc_pbw(pbw, s, t) { | ||
+ | var r = ""; | ||
+ | var tbw = pbw*1000; | ||
+ | var dwpd = (tbw*1000)/(s*t*365); | ||
+ | dwpd = Math.floor(dwpd*1000)/1000; | ||
+ | var gbday = (tbw*1000)/(t*365); | ||
+ | gbday = Math.floor(gbday*1000)/1000; | ||
+ | r = r + "PBW (TBW PB) = " + pbw.toString(); | ||
+ | r = r + "\nTBW (TBW TB) = " + tbw.toString(); | ||
+ | r = r + "\nDWPD = " + dwpd.toString(); | ||
+ | r = r + "\nGB/day = " + gbday.toString(); | ||
+ | return r; | ||
+ | } | ||
+ | function calc_tbw(tbw, s, t) { | ||
+ | var r = ""; | ||
+ | var pbw = tbw/1000; | ||
+ | var dwpd = (tbw*1000)/(s*t*365); | ||
+ | dwpd = Math.floor(dwpd*1000)/1000; | ||
+ | var gbday = (tbw*1000)/(t*365); | ||
+ | gbday = Math.floor(gbday*1000)/1000; | ||
+ | r = r + "PBW (TBW PB) = " + pbw.toString(); | ||
+ | r = r + "\nTBW (TBW TB) = " + tbw.toString(); | ||
+ | r = r + "\nDWPD = " + dwpd.toString(); | ||
+ | r = r + "\nGB/day = " + gbday.toString(); | ||
+ | return r; | ||
+ | } | ||
+ | function calc_dwpd(dwpd, s, t) { | ||
+ | var r = ""; | ||
+ | var tbw = (dwpd*s*t*365)/1000; | ||
+ | tbw = Math.floor(tbw); | ||
+ | var pbw = tbw/1000; | ||
+ | var gbday = (tbw*1000)/(t*365); | ||
+ | gbday = Math.floor(gbday*1000)/1000; | ||
+ | r = r + "PBW (TBW PB) = " + pbw.toString(); | ||
+ | r = r + "\nTBW (TBW TB) = " + tbw.toString(); | ||
+ | r = r + "\nDWPD = " + dwpd.toString(); | ||
+ | r = r + "\nGB/day = " + gbday.toString(); | ||
+ | return r; | ||
+ | } | ||
+ | function calc_gbday(gbday, s, t) { | ||
+ | var r = ""; | ||
+ | var tbw = (gbday*t*365)/1000; | ||
+ | tbw = Math.floor(tbw); | ||
+ | var pbw = tbw/1000; | ||
+ | var dwpd = gbday/s; | ||
+ | dwpd = Math.floor(dwpd*1000)/1000; | ||
+ | r = r + "PBW (TBW PB) = " + pbw.toString(); | ||
+ | r = r + "\nTBW (TBW TB) = " + tbw.toString(); | ||
+ | r = r + "\nDWPD = " + dwpd.toString(); | ||
+ | r = r + "\nGB/day = " + gbday.toString(); | ||
+ | return r; | ||
+ | } | ||
+ | |||
+ | //--><!]]> | ||
+ | </script><p>Конвертер показателя надёжности SSD.</p> | ||
+ | |||
+ | <center> | ||
+ | <table style="width:100%;"><tbody><tr><td style="font-size:10px; width:200px;">Ёмкость SSD (Гб):</td> | ||
+ | <td style="font-size:10px; width:200px;">Гарантия SSD (гг):</td> | ||
+ | <td align="right" colspan="2" style="font-size:10px; width:100%;">Надёжность SSD:</td> | ||
+ | </tr><tr><td style="width:200px;"><input class="uk-input" id="ssd_size" maxlength="7" style="width:200px;" type="text" value="960"></td> | ||
+ | <td style="width:200px;"><input class="uk-input" id="ssd_warranty" maxlength="2" style="width:200px;" type="text" value="5"></td> | ||
+ | <td style="width:200px;"><input class="uk-input" id="ssd_endurance" maxlength="7" style="width:200px;" type="text" value="1.86"></td> | ||
+ | <td style="width:100%;"><select class="uk-select" id="ssd_endurance_type"><option selected="selected" value="pbw">PBW (TBW PB)</option><option value="tbw">TBW (TBW TB)</option><option value="dwpd">DWPD</option><option value="gbday">GB/day</option></select></td> | ||
+ | </tr><tr><td colspan="4"><input class="uk-button" onclick="ssdconvert(document.getElementById('ssd_result'))" style="width:200px;" type="button" value="Конвертировать"></td> | ||
+ | </tr><tr><td colspan="4" style="font-size:10px; width:100%;">Надёжность SSD:</td> | ||
+ | </tr><tr><td colspan="4" style="width:100%;"><textarea class="uk-input" id="ssd_result" name="ssd_result" style="width: 100%; height: 154px;"></textarea></td> | ||
+ | </tr><tr><td colspan="4" style="width:100%;"><input class="uk-button" onclick="copyresult(document.getElementById('ssd_result'))" style="width:200px;" type="button" value="Копировать"></td> | ||
+ | </tr></tbody></table></center> | ||
+ | |||
+ | <p>Показатели надёжности SSD:</p> | ||
+ | |||
+ | <ul><li><strong>DWPD</strong> (Disk Write per Day). Количество перезаписей всего объёма накопителя в день за определенный период времени (3 года или 5 лет, в зависимости от срока гарантии).</li> | ||
+ | <li><strong>TBW</strong> (Total Bytes Written) или TBW (TB). Суммарный объем данных, который гарантированно можно записать на накопитель. Указывается в терабайтах.</li> | ||
+ | <li><strong>PBW</strong> (Petabytes Written) или TBW (PB). Суммарный объем данных, который гарантированно можно записать на накопитель. Указывается в петабайтах.</li> | ||
+ | <li><strong>GB/day</strong> (Gigabytes written per day). Сколько гигабайт в день может записывать SSD.</li> | ||
+ | </ul><h3>Формулы</h3> | ||
+ | |||
+ | <p>При переводе объёмов нужно учесть, что во вселенной производителей SSD есть свои метрики:</p> | ||
+ | |||
+ | <ul><li>1 PB = 1000 TB</li> | ||
+ | <li>1 TB = 1000 GB</li> | ||
+ | <li>1 год = 365 дней</li> | ||
+ | </ul><p>Нам понадобятся дополнительные данные:</p> | ||
+ | |||
+ | <ul><li>S — ёмкость диска в гигабайтах</li> | ||
+ | <li>T — гарантия в годах</li> | ||
+ | </ul><p>DWPD = GB/day ÷ S</p> | ||
+ | |||
+ | <p>DWPD = (TBW (TB) × 1000) ÷ (S × T × 365)</p> | ||
+ | |||
+ | <p>GB/day = DWPD × S</p> | ||
+ | |||
+ | <p>GB/day = (TBW (TB) × 1000) ÷ (T × 365)</p> | ||
+ | |||
+ | <p>TBW (TB) = (DWPD × S × T × 365) ÷ 1000</p> | ||
+ | |||
+ | <p>TBW (TB) = (GB/day × T × 365) ÷ 1000</p> | ||
+ | |||
+ | <p>PBW = TBW (PB) = TBW (TB) ÷ 1000</p> | ||
+ | </div> | ||
+ | | ||
+ | </div> | ||
+ | </html> |