Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to deeply understand Linux disk sequential write and random write

2025-04-02 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/01 Report--

This article introduces how to deeply understand how to write Linux disk sequentially and randomly. The content is very detailed. Interested friends can use it for reference. I hope it will be helpful to you.

Random writing will lead to the continuous channel change of the magnetic head, resulting in a great reduction in efficiency; the sequential write head hardly needs to change the channel, or the time of changing the channel is very short. This article discusses the specific difference between the two and the corresponding kernel calls.

Second, the environment preparation component version OSUbuntu 16.04.4 LTSfio2.2.10 3. Fio introduction passed the fio test, which can reflect the status in read and write We need to focus on several key metrics in fio's output report: slat: it refers to the time it takes from the submission of the slat O to the actual execution of it (Submission latency) clat: it refers to the time from the submission of the fio O to the completion of the IUnip O (Completion latency) lat: it refers to the total time from the creation of the fio to the completion of the fio O: throughput iops: the number of times per second

4. Synchronous write test (1) synchronous random write mainly uses fio as the test tool. In order to see the system call, use the strace tool. The command looks like this:

Let's test a random write first.

Strace-f-tt-o / tmp/randwrite.log-D fio-name=randwrite-rw=randwrite\-direct=1-bs=4k-size=1G-numjobs=1-group_reporting-filename=/tmp/test.db extract key information

Root@wilson-ubuntu:~# strace-f-tt-o / tmp/randwrite.log-D fio- name=randwrite-rw=randwrite\ >-direct=1-bs=4k-size=1G-numjobs=1-group_reporting-filename=/tmp/test.db randwrite: (Gambi0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=sync, iodepth=1 fio-2.2.10 Starting 1 process. Randwrite: (groupid=0, jobs=1): err= 0: pid=26882: Wed Aug 14 10:39:02 2019 write: io=1024.0MB, bw=52526KB/s, iops=13131, runt= 19963msec clat (usec): min=42, max=18620, avg=56.15, stdev=164.79 lat (usec): min=42, max=18620, avg=56.39, stdev=164.79. Bw (KB / s): min=50648, max=55208, per=99.96%, avg=52506.03, stdev=1055.83... Run status group 0 (all jobs): WRITE: io=1024.0MB, aggrb=52525KB/s, minb=52525KB/s, maxb=52525KB/s, mint=19963msec, maxt=19963msec Disk stats (read/write):... Sda: ios=0/262177, merge=0/25, ticks=0/7500, in_queue=7476, util=36.05% list the information we need to focus on: (1) clat, average duration 56ms around (2) lat, average duration 56ms around (3) bw, throughput, about 52m

Let's take a look at the kernel call information:

Root@wilson-ubuntu:~# more / tmp/randwrite.log... 26882 10 lseek 38 lseek (3, 665198592, SEEK_SET) = 665198592 26882 10 38 write 41.919920 write (3, "\ 220\ 240 @\ 6\ 371\ 341\ 277 > 0\ 200\ 36\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 343\ 340\ 370\ 370\ 330\ 30e\ 30"... 4096) = 4096 26882 1038 38 38 38 1491 19969 lseek (3,4313088) SEEK_SET) = 4313088 26882 10 lseek 38 lseek 41.919985 lseek (3, "\ 220\ 240@\ 6\ 371\ 341\ 277) = 455880704 26p\ 340\ 370\ 330\ 30e\ 30"... (3,455880704, SEEK_SET) = 455880704 26882 1038 write "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0200\ 36\ 31\ 0\ 0\ 0\ 0202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 103838 lseek 41.920096 write (3, 338862080, SEEK_SET) = 338862080 26882 10 3841.920112 write (3) "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 10VRV 3841.920161 lseek (3, 739086336, SEEK_SET) = 739086336 26882 10RV 3838 write (3) "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 10write 3841.920229 lseek (3, 848175104, SEEK_SET) = 848175104 26882 10 write 3841.920245 "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 10147200 26882 103841.920312 write (3, 1060147200, SEEK_SET) = 1060147200 26882 1038312 write (3) "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 10VRV 3841.920362 lseek (3, 863690752, SEEK_SET) = 863690752 26882 10RV 3841.920377 write "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 10shuffle 3841.920428 lseek (3, 279457792, SEEK_SET) = 279457792 26882 10 3841.920444 write (3 "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 10shuffle 3841.920492 lseek (3, 271794176, SEEK_SET) = 271794176 26882 10 3841.920508 write (3 "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096 26882 10night 3841.920558 lseek (3, 1067864064, SEEK_SET) = 1067864064 26882 1038 write (3) "\ 220\ 240@\ 6\ 371\ 341\ 277 >\ 0\ 2402\ 24\ 0\ 0\ 0\ 0\ 202\ 2\ 7\ 320\ 343\ 6H\ 26p\ 340\ 277\ 370\ 330\ 30e\ 30", 4096) = 4096. Lseek is used to locate the current file offset before each random read.

Synchronous sequential writing uses the previous method to test sequential writing

Root@wilson-ubuntu:~# strace-f-tt-o / tmp/write.log-D fio-name=write-rw=write\-direct=1-bs=4k-size=1G-numjobs=1-group_reporting-filename=/tmp/test.db write: (grub0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=sync Iodepth=1 fio-2.2.10 Starting 1 process Jobs: 1 (fission 1): [W (1)] [100.0% done] [0KB/70432KB/0KB / s] [0/17.7K/0 iops] [eta 00m:00s] write: (groupid=0, jobs=1): err= 0: Wed Aug 14 10:53:02 2019 write: io=1024.0MB, bw=70238KB/s, iops=17559, runt= 14929msec clat (usec): min=43, max=7464, avg=55.95, stdev=56.24 lat (usec): min=43, max=7465, avg=56.15 Stdev=56.25... Bw (KB / s): min=67304, max=72008, per=99.98%, avg=70225.38, stdev=1266.88... Run status group 0 (all jobs): WRITE: io=1024.0MB, aggrb=70237KB/s, minb=70237KB/s, maxb=70237KB/s, mint=14929msec, maxt=14929msec Disk stats (read/write):... Sda: ios=0/262162, merge=0/10, ticks=0/6948, in_queue=6932, util=46.49% can see that the throughput has increased to about 70m.

Let's take a look at the kernel calls:

Root@wilson-ubuntu:~# more / tmp/write.log... 27046 10 write 54 write 28.194508 (3, "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 write 54194568 (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5422 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 54ver 28.194687 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5447 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 54ver 28.194807 write (3 "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5448 68 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5428 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5488 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5449 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 220\ 24\ 0\ 0\ 0\ 0\ 0\ 0\ 320\ 17\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 Dev 5415 28.195110 write (3 "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 220\ 24\ 0\ 0\ 0\ 0\ 0\ 0\ 320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 54ver 28.195197 write (3 "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5422 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5440 28.195330 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5424 28.195426 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 Dev 54ver 28.195497 write (3 "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 54ver 28.195567 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5437 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5440 28.195704 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5457 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 220\ 24\ 0\ 0\ 0\ 0\ 0\ 0\ 320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 54ver 28.195807 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 220\ 24\ 0\ 0\ 0\ 0\ 0\ 0\ 320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5459 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5415 28.195910 write (3 "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5451 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5412 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0220\ 24\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 Dev 5415 28.196062 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 220\ 24\ 0\ 0\ 0\ 0\ 0\ 0\ 320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 10 5412 write (3 "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 28.196162 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 28.196213 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 3 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 28.196265 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 3 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 28.196314 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 0320\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 28.196363 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 3 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 28.196414 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 fret 28.196472 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 3 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 1054 28.196524 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 20\ 17\ 0\ 0\ 0\ 0\ 0", 4096) = 4096 27046 105415 write (3) "\ 0\ 0\ 23\ 0\ 0\ 0\ 0\ 0\ 0\ 300\ 16\ 0\ 0\ 0\ 0\ 0\ 26\ 0\ 0\ 0\ 0\ 0", 4096) = 4096. Because of sequential reading, there is no need to repeatedly locate the file offset, so you can focus on the write operation.

5. Slat indicators from the above test, we did not find the shadow of slat in the test report of fio. That is because the above are synchronous operations. For synchronous Imax O, slat is actually the time it takes to complete it because the submission and completion of Imax O are the same action.

Write asynchronously, adding commands written in synchronous order to-ioengine=libaio:

Root@wilson-ubuntu:~# fio- name=write-rw=write-ioengine=libaio-direct=1-bs=4k-size=1G-numjobs=1-group_reporting-filename=/tmp/test.db write: (gumb0): rw=write, bs=4K-4K/4K-4K/4K-4K, ioengine=libaio, iodepth=1 fio-2.2.10 Starting 1 process Jobs: 1 (fission 1): [W (1)] [100.0% done] [0KB/119.3MB/0KB / s] [0/30.6K/0 iops] [eta 00m:00s] write: (groupid=0) Jobs=1): err= 0: pid=27258: Wed Aug 14 11:14:36 2019 write: io=1024.0MB, bw=120443KB/s, iops=30110, runt= 8706msec slat (usec): min=3, max=70, avg= 4.31, stdev= 1.56 clat (usec): min=0, max=8967, avg=28.13, stdev=55.68 lat (usec): min=22, max=8976, avg=32.53, stdev=55.72. Bw (KB / s): min=118480, max=122880, per=100.00%, avg=120467.29, stdev=1525.68... Run status group 0 (all jobs): WRITE: io=1024.0MB, aggrb=120442KB/s, minb=120442KB/s, maxb=120442KB/s, mint=8706msec, maxt=8706msec Disk stats (read/write):... Sda: ios=0/262147, merge=0/1, ticks=0/6576, in_queue=6568, util=74.32% can see that the slat index appears, and lat is approximately equal to the sum of slat + clat (avg average), and after switching to asynchronous io, the throughput has been greatly improved, about 120m.

6. Summarize that ● fio should be used as a baseline tool for disks. When you get a machine (physical machine or cloud machine), you should do a baseline test on the disk of the machine as soon as possible. ● all the tests in this article are bypassing caching. In practical applications, the impact of caching should be taken into account.

What are the versions of Linux? the versions of Linux are Deepin, UbuntuKylin, Manjaro, LinuxMint, Ubuntu and so on. Among them, Deepin is one of the best-developed Linux distributions in China; UbuntuKylin is a derivative release based on Ubuntu; Manjaro is a Linux release based on Arch; LinuxMint's default Cinnamon desktop is similar to Windows XP's easy-to-use; Ubuntu is the Linux operating system based on desktop applications.

On how to in-depth understanding of Linux disk sequential write, random write to share here, I hope the above content can be of some help to you, can learn more knowledge. If you think the article is good, you can share it for more people to see.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 204

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report