1,怎么判讀我的固態(tài)硬盤有沒(méi)有緩存啊2,想問(wèn)下帶緩存和不帶緩存的ssd區(qū)別大嗎緩存在ssd上所起到的作3,ssd無(wú)緩存和有緩存有什么區(qū)別4,有緩存的ssd和沒(méi)有的用的出差別么5,帶緩存和不帶緩存的區(qū)別1,怎么判讀我的固態(tài)硬盤有沒(méi)有緩存啊
一般都有緩存的,除非很老的,特別低端的小容量型號(hào),才可能沒(méi)有緩存。
2,想問(wèn)下帶緩存和不帶緩存的ssd區(qū)別大嗎緩存在ssd上所起到的作
沒(méi)有不帶緩存的,只不過(guò)緩存有大有小而已,肯定大的好啊這個(gè)還沒(méi)做了解。。。我看看樓下怎么說(shuō)。。這個(gè)緩存作用和hdd的一樣吧...自然越大越好
3,ssd無(wú)緩存和有緩存有什么區(qū)別
ssd上的緩存一般都是1或者2顆 dram 顆粒構(gòu)成,起到數(shù)據(jù)交換緩沖作用,一款ssd產(chǎn)品是否有緩存這樣的設(shè)計(jì),往往是廠商根據(jù)產(chǎn)品定位和用途做得決定!
一般一些入門級(jí)產(chǎn)品或者低速產(chǎn)品,在設(shè)計(jì)上就會(huì)考慮不帶緩存方案,而一些高速產(chǎn)品由于數(shù)據(jù)交換量大,就設(shè)計(jì)有緩存,以提高產(chǎn)品的讀寫效率!
如果是不同廠商產(chǎn)品,也未必能這樣做對(duì)比!
4,有緩存的ssd和沒(méi)有的用的出差別么
答案是不一定。ssd的緩存主要用于存儲(chǔ)ftl閃存映射表,而不是緩沖用戶讀寫數(shù)據(jù),這一點(diǎn)跟機(jī)械硬盤是不一樣的。有緩存的ssd隨機(jī)讀寫的效率較高,而無(wú)緩存的話就要看主控硬件和固件的設(shè)計(jì)能力了,大部分smi的無(wú)緩存主控如2246xt和2258xt,性能表現(xiàn)都很差勁,主要是優(yōu)化不夠。而東芝的tr200雖然也是無(wú)緩存設(shè)計(jì),但是固件優(yōu)化好,4k隨機(jī)讀寫效能和有緩存的ssd相比絲毫不落下風(fēng),用起來(lái)自然也是沒(méi)有差別。
5,帶緩存和不帶緩存的區(qū)別
以 ssize_t write(int filedes, const void *buff, size_t nbytes)和size_t fwrite(const void *ptr, size_t size, size_t nobj, file *fp)來(lái)講講自己對(duì)unix系統(tǒng)下帶緩存的i/o和不帶緩存的i/o的區(qū)別。首先要清楚一個(gè)概念,所謂的代緩存并不是指上面兩個(gè)函數(shù)的buff參數(shù),而是指unix系統(tǒng)在內(nèi)核中所設(shè)的緩沖存儲(chǔ)器。當(dāng)將數(shù)據(jù)寫到文件上時(shí),內(nèi)核先將該數(shù)據(jù)寫到緩存,如果該緩存未滿,則并不將其排入輸出隊(duì)列,直到緩存寫滿或者內(nèi)核再次需要重新使用此緩存時(shí)才將其排入輸入隊(duì)列,待其到達(dá)對(duì)首,在進(jìn)行實(shí)際的i/o操作,也就是此時(shí)才把數(shù)據(jù)真正寫到磁盤,這種技術(shù)叫延遲寫?,F(xiàn)在假設(shè)內(nèi)核所設(shè)的緩存是100個(gè)字節(jié),如果你使用write,且buff的size為10,當(dāng)你要把9個(gè)同樣的buff寫到文件時(shí),你需要調(diào)用9次write,也就是9次系統(tǒng)調(diào)用,此時(shí)也并沒(méi)有寫到硬盤,如果想立即寫到硬盤,調(diào)用fsync,可以進(jìn)行實(shí)際的i/o操作。標(biāo)準(zhǔn)i/o,也就是帶緩存的i/o采用file*,file實(shí)際上包含了為管理流所需要的所有信息:實(shí)際i/o的文件描述符,指向流緩存的指針(標(biāo)準(zhǔn)i/o緩存,由malloc分配,又稱為用戶態(tài)進(jìn)程空間的緩存,區(qū)別于內(nèi)核所設(shè)的緩存),緩存長(zhǎng)度,當(dāng)前在緩存中的字節(jié)數(shù),出錯(cuò)標(biāo)志等,假設(shè)流緩存的長(zhǎng)度為50字節(jié),把以上的數(shù)據(jù)寫到文件,則只需要2次系統(tǒng)調(diào)用(fwrite調(diào)用write系統(tǒng)調(diào)用),因?yàn)橄劝褦?shù)據(jù)寫到流緩存,當(dāng)其滿以后或者調(diào)用fflush時(shí)才填入內(nèi)核緩存,所以進(jìn)行了2次的系統(tǒng)調(diào)用write。fflush將流所有未寫的數(shù)據(jù)送入(刷新)到內(nèi)核(內(nèi)核緩沖區(qū)),fsync將所有內(nèi)核緩沖區(qū)的數(shù)據(jù)寫到文件(磁盤)。不帶緩存的read和write是相對(duì)于fread/fwrite等流函數(shù)來(lái)說(shuō)明的,因?yàn)閒read和fwrite是用戶函數(shù)(3),所以他們會(huì)在用戶層進(jìn)行一次數(shù)據(jù)的緩存,而read/write是系統(tǒng)調(diào)用(2)所以他們?cè)谟脩魧邮菦](méi)有緩存的,所以稱read和write是無(wú)緩存的io,其實(shí)對(duì)于內(nèi)核來(lái)說(shuō)還是進(jìn)行了緩存,不過(guò)用戶層看不到罷了。