Kullanılan SSD Türüne Göre Ömür Tahmin Eden PY Betiği

Cevapla
Kullanıcı avatarı
TRWE_2012
Mesaj Panosu Yöneticisi
Mesaj Panosu Yöneticisi
Mesajlar: 884
Kayıt: 30 Ağu 2022 21:59
Konum: DÜZCE/Akçakoca
Meslek: MADEN MÜHENDİSİ
Teşekkür etti: 234 kez
Teşekkür edildi: 730 kez
İletişim:

Kullanılan SSD Türüne Göre Ömür Tahmin Eden PY Betiği

Mesaj gönderen TRWE_2012 »

Merhabalar

KOD İÇERİĞİ :

Kod: Tümünü seç

import numpy as np
import matplotlib.pyplot as plt
import subprocess

# Farklı SSD türleri ve tahmini TBW (Terabytes Written) ömürleri
types = ["SLC SATA", "MLC SATA", "TLC SATA", "QLC SATA", "SLC NVMe", "MLC NVMe", "TLC NVMe", "QLC NVMe"]
tbw = [100000, 20000, 5000, 1000, 120000, 30000, 8000, 1500] # Tahmini TBW değerleri

# SMART verilerinden toplam yazma miktarını al (Linux için smartctl kullanımı)
def get_smart_data():
try:
result = subprocess.run(["smartctl", "-A", "/dev/sda"], capture_output=True, text=True)
lines = result.stdout.split("\n")
for line in lines:
if "Total_LBAs_Written" in line:
lba_written = int(line.split()[-1]) # Son sütunu al
tb_written = (lba_written * 512) / (1024**4) # Byte -> TB dönüşümü
return round(tb_written, 2)
except Exception as e:
print(f"SMART verisi okunamadı: {e}")
return None

# Kullanıcıdan yıllık yazma miktarını al
while True:
try:
usage = float(input("Yıllık yazılan veri miktarını girin (TB): "))
break
except ValueError:
print("Lütfen geçerli bir sayı girin.")

# SMART verisinden toplam yazılan veriyi al
smart_tb_written = get_smart_data()
if smart_tb_written is not None:
print(f"SMART verisinden okunan toplam yazılmış veri: {smart_tb_written} TB")

# Yıl aralığı belirle
years = np.arange(1, 11) # 1'den 10 yıla kadar

plt.figure(figsize=(10, 6))

for i, ssd_type in enumerate(types):
lifespan = tbw[i] / usage # Kaç yıl dayanabilir?
fail_prob = np.clip((years / lifespan) * 100, 0, 100) # %100'ü aşmasın
plt.plot(years, fail_prob, label=ssd_type)

plt.xlabel("Yıl")
plt.ylabel("Tahmini Bozulma Olasılığı (%)")
plt.title("Farklı SSD Türleri İçin Bozulma Olasılığı")
plt.legend()
plt.xscale("log") # Logaritmik ölçek
plt.grid(True, which="both", linestyle="--", linewidth=0.5)

plt.show()[/i]
KOD AÇIKLAMASI :
 
  1. Kütüphanelerin İçe Aktarılması:
    • Kod: Tümünü seç

      numpy
      ve

      Kod: Tümünü seç

      matplotlib.pyplot
      kütüphaneleri, sayısal işlemler ve grafik çizimi için kullanılır.
    • Kod: Tümünü seç

      subprocess
      kütüphanesi, dış komutları çalıştırmak için kullanılır.
  2. SSD Türleri ve TBW Değerleri:
    • Farklı SSD türleri ve her birinin tahmini Terabytes Written (TBW) ömürleri bir liste olarak tanımlanır.
  3. SMART Verilerinin Alınması:
    • Kod: Tümünü seç

      get_smart_data
      fonksiyonu,

      Kod: Tümünü seç

      smartctl
      komutunu kullanarak SSD'nin toplam yazma miktarını alır.
    • Kod: Tümünü seç

      Total_LBAs_Written
      değerini bulur ve bunu Terabyte cinsine dönüştürür.
  4. Kullanıcı Girdisi:
    • Kullanıcıdan yıllık yazma miktarını (TB cinsinden) alır ve geçerli bir sayı girilene kadar tekrar eder.
  5. SMART Verisinden Yazılan Veri:
    • Kullanıcının girdiği yıllık yazma miktarı ile birlikte, SMART verisinden okunan toplam yazılan veri miktarını ekrana yazdırır.
  6. Yıl Aralığı:
    • 1'den 10 yıla kadar bir dizi oluşturur.
  7. Grafik Çizimi:
    • Her SSD türü için bozulma olasılığını hesaplar ve yıllara göre grafik çizer.
    • X ekseni logaritmik ölçekle gösterilir.
  8. Grafiğin Gösterilmesi:
    • Grafiği ekranda gösterir.
Bu kod, farklı SSD türlerinin ömürlerini ve bozulma olasılıklarını görselleştirmek için tasarlanmıştır.

NASIL ÇALIŞTIRILIR?
  Resim
 
NOT:

Kullandığınız SSD donanımının hangi hücre türüne ait olduğunu bulmanız için yapmanız gereken adımlar

1.Terminal komut satırına ;

Kod: Tümünü seç

udisksctl info -b /dev/nvme0n1
yazın ve ardından enter tuşuna basın ...

ÖRNEK KOMUT ÇIKTISI :

Kod: Tümünü seç

~$ udisksctl info -b /dev/nvme0n1
/org/freedesktop/UDisks2/block_devices/nvme0n1:
org.freedesktop.UDisks2.Block:
Configuration:
CryptoBackingDevice: '/'
Device: /dev/nvme0n1
DeviceNumber: 66304
Drive: '/org/freedesktop/UDisks2/drives/SAMSUNG_MZALQ256HBJD_00BL2_S65FNX0T438908'
HintAuto: false
HintIconName:
HintIgnore: false
HintName:
HintPartitionable: true
HintSymbolicIconName:
HintSystem: true
Id: by-id-nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908
IdLabel:
IdType:
IdUUID:
IdUsage:
IdVersion:
MDRaid: '/'
MDRaidMember: '/'
PreferredDevice: /dev/nvme0n1
ReadOnly: false
Size: 256060514304
Symlinks: /dev/disk/by-id/nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908
/dev/disk/by-id/nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908_1
/dev/disk/by-id/nvme-eui.002538d421b3f01e
/dev/disk/by-path/pci-0000:00:0e.0-pci-10000:e1:00.0-nvme-1
UserspaceMountOptions:
org.freedesktop.UDisks2.PartitionTable:
Partitions: /org/freedesktop/UDisks2/block_devices/nvme0n1p1
/org/freedesktop/UDisks2/block_devices/nvme0n1p5
/org/freedesktop/UDisks2/block_devices/nvme0n1p4
/org/freedesktop/UDisks2/block_devices/nvme0n1p3
/org/freedesktop/UDisks2/block_devices/nvme0n1p2
Type: gpt
~$ 
 Bu çıktıda ;

Kod: Tümünü seç

Id: by-id-nvme-SAMSUNG_MZALQ256HBJD-00BL2_S65FNX0T438908
satırında;

Model :

Kod: Tümünü seç

SAMSUNG_MZALQ256HBJD-00BL2
Seri No :

Kod: Tümünü seç

S65FNX0T438908
İnternetten kendi modelimi araştırdığımda aşağıdaki bilgileri aldım...

Samsung SSD modeli:MZALQ256HBJD-00BL2
Bu model, Samsung PM991 serisine aittir ve QLC (Quad-Level Cell) 3D V-NAND kullanır.

Özellikleri:
  • Arayüz: NVMe (PCIe 3.0 x4)
  • NAND Türü: QLC 3D V-NAND
  • Kapasite: 256GB
  • Performans: Ortalama tüketici ve giriş seviyesi cihazlar için optimize edilmiştir
  • DRAM: DRAM’siz yapı (Host Memory Buffer - HMB teknolojisini kullanır)
Bu SSD, genellikle dizüstü bilgisayarlarda veya OEM sistemlerde düşük maliyetli ve enerji verimli bir çözüm olarak kullanılır. Daha yüksek performans ve dayanıklılık için, TLC tabanlı bir SSD daha iyi olabilir. Özellikle uzun süreli yazma işlemleri yapanlar için QLC'nin dayanıklılığı biraz daha düşüktür.

SSD’nin sağlığını ve kullanım ömrünü kontrol etmek isterseniz şu komutu kullanabilirmiş.....

Kod: Tümünü seç

sudo smartctl -a /dev/nvme0
ÖRNEK KOMUT ÇIKTISI :

Kod: Tümünü seç

~$ sudo smartctl -a /dev/nvme0
[sudo] linuxmaster için parola:**********************

smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.15.0-133-generic] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Number: SAMSUNG MZALQ256HBJD-00BL2
Serial Number: S65FNX0T438908
Firmware Version: 5L2QFXM7
PCI Vendor/Subsystem ID: 0x144d
IEEE OUI Identifier: 0x002538
Total NVM Capacity: 256.060.514.304 [256 GB]
Unallocated NVM Capacity: 0
Controller ID: 5
NVMe Version: 1.4
Number of Namespaces: 1
Namespace 1 Size/Capacity: 256.060.514.304 [256 GB]
Namespace 1 Utilization: 117.922.439.168 [117 GB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 002538 d421b3f01e
Local Time is: Sun Mar 2 17:07:20 2025 +03
Firmware Updates (0x16): 3 Slots, no Reset required
Optional Admin Commands (0x0017): Security Format Frmw_DL Self_Test
Optional NVM Commands (0x0057): Comp Wr_Unc DS_Mngmt Sav/Sel_Feat Timestmp
Log Page Attributes (0x0f): S/H_per_NS Cmd_Eff_Lg Ext_Get_Lg Telmtry_Lg
Maximum Data Transfer Size: 512 Pages
Warning Comp. Temp. Threshold: 81 Celsius
Critical Comp. Temp. Threshold: 87 Celsius
Namespace 1 Features (0x10): NP_Fields

Supported Power States
St Op Max Active Idle RL RT WL WT Ent_Lat Ex_Lat
0 + 5.35W - - 0 0 0 0 0 0
1 + 5.35W - - 1 1 1 1 0 0
2 + 5.35W - - 2 2 2 2 0 500
3 - 0.0500W - - 3 3 3 3 210 1200
4 - 0.0050W - - 4 4 4 4 1000 9000

Supported LBA Sizes (NSID 0x1)
Id Fmt Data Metadt Rel_Perf
0 + 512 0 0

=== START OF SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

SMART/Health Information (NVMe Log 0x02)
Critical Warning: 0x00
Temperature: 24 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 11%
Data Units Read: 65.256.588 [33,4 TB]
Data Units Written: 40.344.428 [20,6 TB]
Host Read Commands: 1.028.856.782
Host Write Commands: 757.913.641
Controller Busy Time: 1.991
Power Cycles: 957
Power On Hours: 9.409
Unsafe Shutdowns: 164
Media and Data Integrity Errors: 0
Error Information Log Entries: 0
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 24 Celsius

Error Information (NVMe Log 0x01, 16 of 64 entries)
No Errors Logged
 SSD donanımımızın hücre türünü öğrendikten sonra gerisi kolay, grafiğe bakarak, diskin birinci 10 yılda ilk ciddi hatayı % sağlığının hangi sayısal değerinde vereceğini az çok kesiterebilirsiniz.

EKRAN GÖRÜNTÜSÜ : (Sistem : GNU/Linux Mint 21.1 x64 LXDE)
Resim 
Dosya ekleri
ssd_wear_graph.py.7z
TRWE_2012 tarafından kodlandı.
MART 2025
(1.16 KiB) 73 kere indirildi
Verily We have granted thee a manifest Victory
Fetih Suresi - 1.Ayet


Resim
Resim

Etiketler:
Cevapla

“Python Betiklerimiz” sayfasına dön