Quotet vähän sekavasti, mutta siis lompolon quotet alkuosassa ja puolen välin alapuolella Timon.
Tottakai fragmentoitumista tapahtuu kun levylle kirjoitetaan ja ei etukäteen tiedetä kaikkea, mitä kirjoitetetaan. Eri asia on vaikuttaako se merkittävästi.
Tuo on mielestäni hyvä kysymys jälleen. Mikä on merkittävää? Riippuu varmasti käytöstä. Meillä on talossa lukematon määrä servereitä joille ei ole koskaan tehty mitään huoltotoimenpiteitä. Ei edes päivityksiä. Ne vaan hurisee vuodesta toiseen ja toimii. Onko sitten päivityksillä, levyneheytyksellä tietokantojen purgeilla tms toimenpiteillä merkitystä. Ilmeisesti ei. Ei ainakaan kaikessa käytössä. Varmasti lukemattomissa organisaatioissa on valtavat määrät servereitä joille ei ole tehty mitään sen jälkeen kun ne on saatu kerran "toimimaan". Jos se toimii, älä korjaa sitä. On ainakin hyvä ohje siellä missä resursseista on muutenkin jatkuvasti pulaa.
Voisit kokeilla laittaa nuo pienet tiedostot yhdelle omalle osiolle ja isot tiedostot toiselle omalle osiolle. Osiot voit halutessasi säätää käyttötarkoitukseesi sopivaksi. man mksf.ext3 auttaa. Voit sitten kertoa voititko jotain. Näin voit osoittaa levysi fragmentoitumisesta johtuvan haitan. Jos optimoit tiedostojärjestelmäsi, saatat saada muutakin pientä etua nykytilanteeseen verrattuna.
Tuohon tulokseen tultiin aika nopeasti täälläkin. Eli pieni temp osio noille pienille tiedostoille, josta ne siirretään sitten esim kerran vuorokaudessa zip pakettiin ja talteen isommalle osiolle. Onkin hyvä kysymys miksi järjestelmämme säästää nuo tiedostot kun kerran aivan vastaava data on tietokannassa. Lisäksi vastaava data on vielä (joskin hankalammin) saatavissa myös lähdejärjestelmästä uudelleen. Sinänsä noiden tiedostojen säästämiselle ei pitäisi olla muuta syytä kuin että niiden uudelleen prosessointi virhetilanteessa on helppoa kun ne löytyy palvelimen levyltä. Noita pieniä 1-4 kt XML tiedostoja tulee 10-50 tuhatta kappaletta vuorokaudessa.
Oma käyttöni on niin tavallista, etten jaksa noin pieniä optimointeja tehdä.
Juu. Kuten todettu, täälläkin on valtava määrä NAS / muita verkkolevy / järjestelmä palvelimia joita ei ole koskaan "huollettu", kun ei sillä ole käytännössä mitään merkitystä. Tuossa em. palvelimessa vain oikeasti tuli fragmentoituminen isoksi ongelmaksi. Varsinkin kun noita pikkutiedostoja siivottiin vasta sitten pois kun levy oli niin täynnä että tuli 1 gigan levytila varoitus. (järjestelmässä on tera levyä 3x500GB Raid5) Sekä systeemi on pyörinyt vuosi kausia, jolloin fragmentoitumsiella on hyvää aikaa rakentua. Samoin järjestelmän tietokannasta tehdään suuria yhtäjaksoisia datalukuja erilaisia analyysejä varten. Tuolloin tuhoton fragmentoituminen todellakin näkyy ja kuuluu. Jo yksi prosessi saa levy I/O:n täysin tappiin.
Aika monesti NCQ hidastaa työpöytäkäytössä käyttöä hieman tai sillä ei ole vaikutusta. Uusimmilla kovalevyillä valmistajat ovat saaneet muutaman prosentin eron yleensä NCQ:n hyväksi. Eroja löytyy palvelinkäytössä kyllä enemmänkin, tosin silloin varmaan usein 10-15krpm SCSI-levyt voivat olla enemmän tarpeen.
Aivan. NCQ:n ja levypuskureidenkin osalta on olennaista se, että levyluku(a) on tarpeeksi jonossa. Eli jos käyttis / sovellus pyytää lukemaan sitä ja sitten sen jälkeen tätä. Niin NCQ:sta ei ole mitään hyötyä vaan luvut pitäisi saada "rinnakkain" sisään jotta niistä muodostuisi NCQ tasolle jonoa. Olenkin huomannut että Linuxissa mm. levy puskurit (?) ovat optimoitu läpäisyn ei vasteajan osalta. Eli jos on yksi prosessi joka lukee levyltä 1 ja kirjoittaa levylle 2. Tämä tuntuu hidastavan hyvin merkittävästi kaikkia prosesseja jotka tekevät mitä tahansa pientä levy I/O:ta. Tarkoittaa sitä että tuota kopionti prosessia käsitellään aika isoina lohkoina. Muuten rinnakkais prosessit pääsisivät paremmin väliin. Saako tätä arvoa muuten säätää jossain? Ainakin Desktop käytössä tuota lohkokokoa voisi pienentää.
Creativen X-Fi-äänikorttien superominaisuudet - "tee MP3:stasi tämän käyrän osoittaman verran paremman kuuloista kuin CD:n ääni" - jjep.
No tästä olen kyllä samaa mieltä, olenkin nauranut noille mainoksille aika raskaasti.
No NCQ ei toki ole vaporwarea, ja tukeakin sille kernelissä on. Kuten kaikissa avoimen lähdekoodin projekteissa, tuki kytketään päälle kun sillä on riittävästi merkitystä jollekin niin että koodi saadaan kunnolla valmiiksi. Voi olla että kaikista näistä NCQ:n ongelmista ja lähes häviävän pienistä hyödyistä (poislukien SATA-levyjen palvelinkäyttö) johtuen yhtäkään aihetta tuntevaa kehittäjää ei asia vain ole kiinnostanut riittävästi. SATA-levyjen palvelinkäytön hyötyjen takia luulisi tosin aiheuttavan riittävää kiinnostusta.
Jep. Tuo riittävämerkitys onkin hyvä kysymys. Se on niin sektorista ja resursseista kiinni. Kiinnostaako F1 tallia jos joku esittelee tekniikan joka maksaa miljoonan ja saa auton 1% nopeammaksi? No taatusti kiinnostaa. Mutta ehkä kaikkialla muualla ei ole vastaavaa mielenkiintoa marginaaliseen parannukseen.
Itse olin kyllä tosiaan siinä käsityksessä että NCQ:ta tuetaan jo useimmilla SATA-ohjaimilla, kuten kaikilla AHCI-standardia noudattavilla. Esim. http://linux-ata.org/software-status.html#tcq sanoo NCQ:sta "#3 is supported by libata, for most hardware and devices that support NCQ."
Ubuntuforumissista luettuna, tuo vaatii jonkun testikernelin ja siihen patchit. Eli ei ole vakio-ominaisuutena käytössä. Järjestelmä kyllä tunnistaa NCQ:n ja osaa näyttää sen olemassa olon, mutta se ei ole aktiivisena.
Hieman jäi mietityttämään se, että miksi NCQ lisää latenssia. Ainakaan teroiassa sen ei pitäisi, mutta totuushan voi olla ihan jotain muuta. Esimerkiksi huono implementointi / yhteensopivuus sekä rauta että softa-ohjaimien kanssa tms.
Toinen missä tämä "riittävää hyötyä" ilmiö näkyy hyvin on mielestäni moniprosessorisille järjestelmille sopivat ohjelmistot. Moni ohjelmisto voitaisiin laittaa tukemaan moniprosessorisia järjestelmiä, mutta silti ei ole vielä toistaiseksi nähty sille tarvetta. Eli kehittäjien mielestä kustannus / hyöty analyysin pohjalta se ei vaan kannata. Rinnastamisen myötä myös riski hämäriin bugeihin kasvaa aika kiitettävästi. Jos kerran perussoftan toimimaan saaminen on jo vaakalaudalla, kuka haluaa lähteä tekemään hyvin multithreadaavaa versiota?
Vielä parina referenssinä mainittakoon esim uTorrentin Super-Seed ja eMulen "rarest block first" toiminnot. Kummallakaan toiminnolla ei saavuteta varmaa hyötyä, mutta ainakin tietyissä tilanteissa kummastakin on osoitettavissa olevaa hyötyä. Muistan kuinka eDonkey2000 kehittäjät pitkään taisteli rarest block first featurea vastaan, kun ei siitä ole mitään hyötyä.
Tässä talossa törmään myös jatkuvasti vastaavaan ongelmaan. Jotain parannusta ei haluta tehdä, sen takia että sillä ei ole mitään merkitystä. Toimiihan se. Vastustettiinhan kaikkia auton turvaparannuksia ja turvavarusteitakin hyvin pitkään autoteollisuuden toimesta. Asiat eivät aina ole valitettavasti ihan yksinkertaisia.
Kiitos Stroragereviewin linkistä, tutustun sisältöön. Tuollahan se lukee suoraan, parhaimmillaan NCQ:n käyttö parasi suorituskyvyn kaksinkertaiseksi (ilman NCQ:ta tulos oli 51% huonompi), kun levyltä luettiin hajallaan olevia tietoja. Eli juuri tilanteessa jossa esimerkiksi yksi iso tiedosto on päässyt fragmentoitumaan pahasti. En sanoisi tuota lainkaan merkityksettömäksi asiaksi. - Kiitos referenssistä. Tuo siis parhaassa tapauksessa. Monissa tilanteissa vaikutusta ei ollut lainkaan tai se oli lievästi negatiivinen. Mutta mielestäni siis järjestelmissä joissa on levy I/O rajoitteisuutta niin NCQ kannattaa laittaa päälle. Koska mahdolliset hyödyt kuormituksessa ovat isommat kuin haitat.
Vista / NTFS asiaa: Huomasin tänään että jostain aivan käsittämättömästä syystä esim Vista tuntuu fragmentoivan tiedostoja täysin tolkuttomasti. Latasin tuossa kasan 21 kilotavun sähköposteja. Jokainen tiedosto oli 3-4 fragmentissa. Samoin hankemiston indeksi joka oli 40 kiloa oli mukavasti 10 fragmentissa. Eli kaikki on levällään kuin jokisen eväät.
NCQ referenssi:
http://www.storagereview.com/500.sr?page=0%2C6Se sitten osaako sovellukset esim hyödyntää jonoja on ihan toinen kysymys. Eli mennään samaan kategoriaan kuin multicore tuen kanssa. Fiksusti tehty tietokanta sovellus esim osaa hyödyntää tuota jonoa, vaikka sisään tulisikin yksi requesti. Voihan sen aina forkata ja pilkkoa pienempiin osiin. Klassisen tyhmästitehtyjen sovellusten kanssa hyödyt erilaisista rinnastamisista tai pipelineistä jää täysin olemattomiksi. Pari kaveria tekee softia isoille klustereille, niissä on kyllä mietittävä tarkkaan miten prosessit suunnittelee. Ettei 1023 konetta jauha tyhjää kun yksi jumittaa.