Reading and Writing using ATA-PASS-THROUGH Command

In this blog, we will see the use of ATA-PASS-THROUGH, a SCSI Command for reading and writing an SATA Drive. Here I will only explain the fields of ATA-PASS-THROUGH CDB (command descriptor block) other parts of code structure would remain same as the SCSI READ and WRITE command [see my previous blogs or just see … Continue reading Reading and Writing using ATA-PASS-THROUGH Command

Advertisements

Linux Utility to Measure the Performance of NVMe Storage Drives

NVMe is a new upcoming storage protocol. It has been developed because Solid State Drives have started filling up the Threshold limits of SATA Protocol. It has been designed keeping the growth of storage industry in mind; thus, future storage drives won't be able to saturate its threshold anytime soon. This utility is an attempt … Continue reading Linux Utility to Measure the Performance of NVMe Storage Drives

Linux Utility to Measure the Performance of SATA Storage Drives

This utility or code was an attempt to measure the performance of SATA SSDs and HDDs. With Performance, I meant - parameters like Latency, IOPS and Throughput. This utility was written for the environment of Ubuntu 16.04 but compiling it for other OSes should not be an issue. This utility is developed to compare the … Continue reading Linux Utility to Measure the Performance of SATA Storage Drives

Write-Amplification as a Performance and Health Parameter for SSDs

Write-Amplification is the best Performance and Health parameter if one wants to inspect them for SSDs. Write-Amplification is defined as the ratio of FLASH PAGES WRITTEN and HOST PAGES WRITTEN. Write Amplification (WA) = FLASH DATA WRITTEN / HOST DATA WRITTEN. The Performance of a storage drive is measured from IOPS and Throughput. And the … Continue reading Write-Amplification as a Performance and Health Parameter for SSDs

C-program to send Identify-Namespace command to an NVMe storage drive

In this blog, we will send an Identify command to fetch the Identify-Namespace data. The code explained here, is written for Ubuntu 16.04. Every NVMe drive has to support an Identify command. In the case of SATA 512 bytes of data is returned upon running of Identify command - it identifies the storage drive as … Continue reading C-program to send Identify-Namespace command to an NVMe storage drive

C-program to send Identify-Controller command to an NVMe Storage Drive

Here in this blog, we will learn to send Identify Controller command to an NVMe drive. I have used Ubuntu 16.04 and drivers in there for sending the command. We will also try to interpret some of the basic fields in the data returned by the command. Identify-controller command gives us following information about an … Continue reading C-program to send Identify-Controller command to an NVMe Storage Drive

C Program to read and interpret SMART log of an NVMe Drive

Just like SATA drives, NVMe drives also provide the SMART log data. SMART log, if you people do not know, is the concentration of all the logs a drive maintains. It stands for "Self-Monitoring, Analysis, and Reporting Technology". It gives us the information like Temperature of the drive, Host Data written, Available Spare Space and … Continue reading C Program to read and interpret SMART log of an NVMe Drive

Asynchronous method to send an SCSI command

IOCTL is the synchronous(blocking) method to send a command. This means that IOCTL will return only when the command sent is either complete or failed to complete. There is little difference in the synchronous and asynchronous method of sending a command using SCSI Genric. Every command goes through three stages: The command will be received … Continue reading Asynchronous method to send an SCSI command