[{"data":1,"prerenderedAt":688},["ShallowReactive",2],{"project-40932492":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":35,"aspects":36,"strip":44,"post_text":47,"what":48,"said":83,"maker_in_thread":223,"shape":235,"grid":240,"attempts":651,"same_week":652,"maker_shows":39,"maker_hidden":680,"reader_version":681,"card":682},"40932492","Dut","Dut – a fast Linux disk usage calculator","title","Show HN: Dut – a fast Linux disk usage calculator","https:\u002F\u002Fcodeberg.org\u002F201984\u002Fdut","codeberg.org","201984",1720654196,2024,396,148,117,3515,4,"legend","dev_tools","disk usage calculator","cli",[24,25,26,27,28],"disk usage","du alternative","linux","hard links","multi-threaded","curious",0.043,{"positive":32,"neutral":33,"mixed":34,"critical":32},9,33,0,51,{"idea":37,"performance":38,"design":40,"execution":41,"docs":43},{"positive":34,"critical":34},{"positive":39,"critical":39},1,{"positive":39,"critical":18},{"positive":39,"critical":42},3,{"positive":34,"critical":39},[42,42,42,34,34,34,42,34,34,42,42,34,42,42,34,34,34,39,42,45,42,42,42,34,39,39,46,34,42,46,45,42,18,42,42,46,42,39,34,42],2,5,"\"dut\" is a disk usage calculator that I wrote a couple months ago in C. It is multi-threaded, making it one of the fastest such programs. It beats normal \"du\" in all cases, and beats all other similar programs when Linux's caches are warm (so, not on the first run). I wrote \"dut\" as a challenge to beat similar programs that I used a lot, namely pdu[1] and dust[2].\n\n\"dut\" displays a tree of the biggest things under your current directory, and it also shows the size of hard-links under each directory as well. The hard-link tallying was inspired by ncdu[3], but I don't like how unintuitive the re",{"problem":49,"audience":55,"pricing":63,"motivation":64,"time_to_build":63,"stack":68,"openness":80,"stage":81,"team_size":82},{"value":50,"source":51,"evidence":52},"Shows which directories and files use the most disk space, faster than du","maker",[53],{"id":54},"post",{"value":56,"source":57,"evidence":58},"Linux users checking disk usage from the terminal","inferred",[59,60],{"id":54},{"id":61,"by":11,"text":62},"40935775","It is being sorted by the first column, but it also keeps subdirectories with each other. Look at the order of your top-level directories. ``` 3.2G 0B |- .pyenv 3.4G 0B |-…",null,{"value":65,"source":51,"evidence":66},"Built as a challenge to beat pdu and dust, tools the maker used often",[67],{"id":54},[69,76],{"value":70,"source":51,"evidence":71},"C",[72,73],{"id":54},{"id":74,"by":11,"text":75},"40935673","Because (a) I felt like it, (b) it would be more difficult to make raw syscalls in Rust, and (c) I use[1] flexible array members to minimize allocations, whereas Rust support for…",{"value":77,"source":51,"evidence":78},"Linux syscalls (fstatat, statx, getdents)",[79],{"id":54},"open_source","launched","solo",{"praise":84,"objections":108,"requests":129,"questions":167,"alternatives":182},[85,97],{"value":86,"source":87,"evidence":88},"Fast performance and useful tree output","commenter",[89,93],{"id":90,"by":91,"text":92},"40938633","tonymet","great app. very fast at scanning nested dirs. I often need recursive disk usage when I suddenly run out of space and scramble to clean up while everything is crashing.",{"id":94,"by":95,"text":96},"40933344","teamspirit","Nice job. I've been using dua[0] and have found it to be quite fast on my MacBook Pro. I'm interested to see how this compares. [0] https:\u002F\u002Fgithub.com\u002FByron\u002Fdua-cli",{"value":98,"source":87,"evidence":99},"GPLv3 license and C codebase appreciated",[100,104],{"id":101,"by":102,"text":103},"40933265","chomp","GPLv3, you love to see it. Great work.",{"id":105,"by":106,"text":107},"40937824","bitwize","Neat, a new C program! I get a little frisson of good vibes whenever someone announces a new project in C, as opposed to Rust or Python or Go. Even though C is pretty much a lost…",[109,116,123],{"value":110,"source":87,"evidence":111},"Tree output is hard to read and sorting looks wrong",[112],{"id":113,"by":114,"text":115},"40935609","imiric","I've been using my own function with `du` for ages now, similar to others here, but I appreciate new tools in this space. I gave `dut` a try, but I'm confused by its output. For…",{"value":117,"source":87,"evidence":118},"Does not follow symlinks given with trailing slash",[119],{"id":120,"by":121,"text":122},"40935482","frumiousirc","dut looks very nice. One small surprise I found came when I have a symlink to a directory and refer to that with a trailing \"\u002F\". dut doesn't follow the link in order to scan the…",{"value":124,"source":51,"evidence":125},"Linux-only, does not run on macOS",[126],{"id":127,"by":11,"text":128},"40933376","I benchmarked against dua while developing, and the results are in the README. Note that dut uses Linux-specific syscalls, so it won't run on MacOS. TL;DR: dut is 3x faster with…",[130,141,156],{"value":131,"source":87,"evidence":132},"Interactive TUI browser like ncdu",[133,137],{"id":134,"by":135,"text":136},"40933755","jmakov","Would be great to have a TUI interface for browsing like ncdu.",{"id":138,"by":139,"text":140},"40933010","timrichard","Looks nice, although a feature I like in ncdu is the 'd' key to delete the currently highlighted file or directory.",{"value":142,"source":87,"evidence":143},"Graphical or treemap style output",[144,148,152],{"id":145,"by":146,"text":147},"40934590","robocat","> but I don't like how unintuitive the readout is The best disk usage UI I ever saw was this one: https:\u002F\u002Fwww.trishtech.com\u002F2013\u002F10\u002Fscanner-display-hard-disk-usage-in-chart-form\u002F…",{"id":149,"by":150,"text":151},"40933937","tamimio","Someone, please create a Gdut, a fork that will produce graphs for a quick and easy way to read, it’s almost impossible to read in small vertical screens.",{"id":153,"by":154,"text":155},"40941313","jbaber","I always want treemaps. console: rust: cargo install diskonaut python: pip install ohmu GUI: gdmap windows: windirstat mac: grand perspective (I seem to r call)",{"value":157,"source":87,"evidence":158},"Diff against previous runs or caching",[159,163],{"id":160,"by":161,"text":162},"40938244","inbetween","I often want to know who there is a sudden growth disk usage over the last month\u002Fweek\u002Fetc, what suddenly take space. In those cases I find myself wishing that du and friends…",{"id":164,"by":165,"text":166},"40933847","shellfishgene","What I need is a du that caches the results somewhere and then does not rescan the 90% of dirs that have not changed when I run it again a month later...",[168,175],{"value":169,"source":87,"evidence":170},"How are reflinks counted",[171],{"id":172,"by":173,"text":174},"40932959","kccqzy","I'm away from my Linux machine now but I'm curious whether\u002Fhow you handle reflinks. On a supported file system such as Btrfs which I use, how does `cp --reflink` gets counted?…",{"value":176,"source":87,"evidence":177},"Why C instead of Rust or Zig",[178],{"id":179,"by":180,"text":181},"40934064","miew","Why C and not Rust or even Zig?",[183,191,195,202,209,216],{"value":184,"source":87,"evidence":185},"ncdu",[186,187],{"id":138,"by":139,"text":140},{"id":188,"by":189,"text":190},"40934778","tiku","Ncdu is easy to remember and use, clicking through etc. would be cool to find a faster replacement, same usage instead of a new tool with parameters to remember..",{"value":192,"source":87,"evidence":193},"dua",[194],{"id":94,"by":95,"text":96},{"value":196,"source":87,"evidence":197},"gdu",[198],{"id":199,"by":200,"text":201},"40934004","sandreas","Nice work! There is also gdu[1], where the UI is heavily inspired by ncdu and somehow feels way faster... 1: https:\u002F\u002Fgithub.com\u002Fdundee\u002Fgdu",{"value":203,"source":87,"evidence":204},"diskonaut",[205],{"id":206,"by":207,"text":208},"40933888","anon-3988","I have been using diskonaut, its fast enough given that it also produces a nice visual output.",{"value":210,"source":87,"evidence":211},"WizTree and WinDirStat",[212],{"id":213,"by":214,"text":215},"40934720","Neil44","On Windows I always used to use Windirstat but it was slow, then I found Wiztree which is many orders of magnitude faster. I understand it works by directly reading the NTFS…",{"value":217,"source":87,"evidence":218},"btdu",[219],{"id":220,"by":221,"text":222},"40933613","mos_basik","Something like that exists for btrfs; it's called bdtu. It has the accuracy\u002Ftime trade-off you're interested in, but the implementation is quite different. It samples random…",{"comments":224,"answered":32,"key":225},16,[226,229,232],{"id":227,"text":228},"40933235","Thanks! What you described is a neat idea, but it's not possible with any degree of accuracy AFAIK. To give you a picture of the problem, calculating the disk usage of a…",{"id":230,"text":231},"40933340","Are you referring to the kmem_cache_alloc calls in the profile? If so, that's all in kernel space and there's nothing I can do about it. https:\u002F\u002Fshare.firefox.dev\u002F3XT9L7P",{"id":233,"text":234},"40933425","I just saw your edit. You have WAY more stuff under your home directory than I do. I only have ~2.5M inodes on both my laptop drives combined. The difference in the buff\u002Fcache…",{"commenters":236,"max_depth":237,"maker_replies":224,"first_comment_mins":238,"lifespan_hours":239},102,8,103,46,[241,245,247,249,253,257,260,263,266,267,270,273,276,280,283,286,289,292,294,297,299,301,304,307,309,312,315,318,321,324,327,330,333,336,338,341,344,347,350,353,354,357,360,363,366,369,372,375,377,380,382,384,385,387,390,394,397,400,402,405,408,410,413,416,418,423,425,429,432,434,436,440,443,445,448,450,453,455,457,459,462,464,465,467,470,473,476,478,481,484,486,488,491,492,494,498,500,503,504,509,512,514,516,520,523,525,530,534,536,540,543,547,549,553,556,559,561,563,565,570,571,576,578,581,585,587,591,595,597,600,602,606,610,614,618,622,624,626,628,630,633,635,638,641,642,645,647,649],[242,34,42,243,244,34],"40933207","project\u002Fneutral\u002Fidea","montroser",[227,34,34,246,11,39],"maker\u002Fneutral\u002Fidea",[248,34,42,243,244,34],"40933449",[250,34,42,251,252,34],"40933548","project\u002Fneutral\u002Fperformance","geertj",[254,34,34,255,256,34],"40935638","other\u002Fneutral\u002Fnone","olddustytrail",[258,34,42,243,259,34],"40933238","BeeOnRope",[261,34,42,243,262,34],"40933280","fsckboy",[264,34,34,265,259,34],"40933296","commenter\u002Fneutral\u002Fidea",[220,34,34,255,221,34],[268,34,34,255,269,34],"40933659","jszymborski",[271,34,42,243,272,34],"40933789","renewiltord",[274,34,34,255,275,34],"40939318","oehpr",[277,34,34,278,279,34],"40933668","other\u002Fneutral\u002Fidea","lenkite",[281,34,34,265,282,34],"40933785","hsbauauvhabzb",[284,34,34,265,285,34],"40933820","masklinn",[287,34,34,265,288,34],"40935027","IsTom",[290,34,34,265,291,34],"40941798","aidenn0",[293,34,34,265,282,34],"40940919",[295,34,34,265,296,34],"40941149","Someone",[298,34,34,265,282,34],"40942091",[300,34,34,265,296,34],"40943301",[302,34,34,303,291,34],"40941633","commenter\u002Fneutral\u002Fperformance",[305,34,34,278,306,34],"40933925","nh2",[145,39,42,308,146,34],"project\u002Fneutral\u002Fdesign",[310,39,34,255,311,34],"40934617","pricechild",[313,39,34,255,314,34],"40935145","bmicraft",[316,39,34,255,317,34],"40935173","haskman",[319,39,34,255,320,34],"40934652","rlue",[322,39,34,255,323,34],"40934697","krackers",[325,39,34,255,326,34],"40934746","supernes",[328,39,34,255,329,34],"40938423","radicality",[331,39,34,255,332,34],"40935079","OskarS",[334,39,34,255,335,34],"40939166","pnutjam",[337,39,34,255,332,34],"40943956",[339,39,42,308,340,34],"40935283","ajnin",[342,39,34,255,343,34],"40937955","roelschroeven",[345,39,34,255,346,34],"40938822","entropicdrifter",[348,39,34,255,349,34],"40941776","stavros",[351,39,34,255,352,34],"40935547","kreyenborgi",[213,45,42,243,214,34],[355,45,34,255,356,34],"40935228","Filligree",[358,45,34,303,359,34],"40938278","luma",[361,45,34,255,362,34],"40940573","ablob",[364,45,34,255,365,34],"40944903","p_l",[367,45,34,255,368,34],"40935714","Gormo",[370,45,34,255,371,34],"40937912","fsfod",[373,45,34,255,374,34],"40938899","utensil4778",[376,42,42,251,306,34],"40934005",[378,18,42,251,379,34],"40933298","jeffbee",[230,18,34,381,11,39],"maker\u002Fneutral\u002Fperformance",[383,18,34,303,379,34],"40933348",[233,18,34,381,11,39],[386,18,34,255,379,34],"40939049",[388,46,34,255,389,34],"40934256","INTPenis",[391,46,34,392,393,34],"40934465","commenter\u002Fneutral\u002Fnone","mshook",[395,46,34,392,396,34],"40934499","out-of-ideas",[398,46,34,392,399,34],"40935103","BlackLotus89",[401,46,34,392,396,34],"40941780",[403,46,34,303,404,34],"40934630","dotancohen",[406,46,34,392,407,34],"40939622","zamadatix",[409,46,34,392,389,34],"40936729",[411,46,34,392,412,34],"40934469","matzf",[414,46,34,392,415,34],"40943685","kelahcim",[417,46,34,392,415,34],"40934740",[419,420,39,421,422,34],"40933388",6,"project\u002Fcritical\u002Fperformance","IAmLiterallyAB",[424,420,34,381,11,39],"40933482",[426,427,34,255,428,34],"40933908",7,"mg",[430,237,42,308,431,34],"40934434","laixintao",[172,32,42,433,173,34],"project\u002Fneutral\u002Fnone",[435,32,34,433,11,39],"40933078",[437,32,39,438,439,34],"40933503","project\u002Fcritical\u002Fexecution","vlovich123",[441,32,34,255,442,34],"40939458","namibj",[160,444,42,243,161,34],10,[446,444,42,243,447,34],"40938392","beepbooptheory",[449,444,42,243,161,34],"40940228",[451,444,34,255,452,34],"40938418","thesh4d0w",[454,444,34,255,161,34],"40940240",[456,444,34,255,442,34],"40939447",[138,458,42,243,139,34],11,[460,458,34,461,11,39],"40933114","maker\u002Fneutral\u002Fnone",[94,463,42,251,95,34],12,[127,463,34,251,11,39],[164,466,42,243,165,34],13,[468,466,34,392,469,34],"40933919","kstrauser",[471,466,34,392,472,34],"40933967","svpg",[474,466,34,392,475,34],"40934012","Galanwe",[477,466,34,392,165,34],"40934101",[479,466,34,392,480,34],"40934013","legends2k",[482,466,34,392,483,34],"40934378","mort96",[485,466,42,243,165,34],"40935399",[487,466,34,255,165,34],"40935441",[113,489,39,490,114,34],14,"project\u002Fcritical\u002Fdesign",[61,489,34,308,11,39],[493,489,39,490,114,34],"40936089",[495,489,34,496,497,34],"40947089","commenter\u002Fneutral\u002Fdesign","db48x",[499,489,34,496,114,34],"40949237",[105,501,46,502,106,34],15,"project\u002Fpositive\u002Fnone",[206,224,34,255,207,34],[505,506,42,507,508,34],"40933758",17,"project\u002Fneutral\u002Fexecution","jonhohle",[510,506,34,511,306,34],"40933900","commenter\u002Fneutral\u002Fexecution",[513,506,34,251,11,39],"40935559",[199,515,34,255,200,34],18,[517,518,34,255,519,34],"40933300",19,"tambourine_man",[521,522,34,255,282,34],"40932968",20,[524,522,34,433,11,39],"40933125",[526,527,42,528,529,34],"40939729",21,"project\u002Fneutral\u002Fdocs","cycomanic",[531,532,42,243,533,34],"40934822",22,"bArray",[101,535,46,502,102,34],23,[537,538,42,528,539,34],"40933331",24,"jftuga",[541,538,34,542,11,39],"40933359","maker\u002Fneutral\u002Fdocs",[544,545,34,255,546,34],"40933933",25,"mixmastamyk",[120,548,39,438,121,34],26,[550,551,42,433,552,34],"40934092",27,"trustno2",[554,551,42,433,555,34],"40934620","Ringz",[90,557,46,558,91,34],28,"project\u002Fpositive\u002Fperformance",[153,560,34,255,154,34],29,[134,562,42,308,135,34],30,[188,564,39,490,189,34],31,[566,567,46,568,569,34],"40949800",32,"project\u002Fpositive\u002Fdesign","pmdfgy",[149,33,39,490,150,34],[572,573,46,574,575,34],"40933037",34,"project\u002Fpositive\u002Fexecution","notarealllama",[577,573,34,507,11,39],"40933084",[579,573,34,392,580,34],"40934260","nottorp",[582,583,42,528,584,34],"40935560",35,"classified",[586,583,34,528,11,39],"40936835",[588,583,39,589,590,34],"40939790","project\u002Fcritical\u002Fdocs","israrkhan",[592,593,42,507,594,34],"40933136",36,"jepler",[596,593,34,507,11,39],"40933162",[598,593,46,599,594,34],"40933272","maker\u002Fpositive\u002Fnone",[601,593,42,251,306,34],"40933959",[603,604,46,502,605,34],"40933889",37,"rafaelgoncalves",[607,608,46,502,609,34],"40938596",38,"kseistrup",[611,612,46,502,613,34],"40941273",39,"oigursh",[615,616,42,308,617,34],"40933770",40,"dima55",[619,616,34,620,621,34],"40934024","other\u002Fneutral\u002Fdesign","metadat",[623,616,34,620,617,34],"40938585",[179,625,42,507,180,34],41,[627,625,34,392,475,34],"40934067",[629,625,34,392,580,34],"40934275",[631,625,39,438,632,34],"40935458","_flux",[634,625,34,255,580,34],"40935681",[636,625,34,392,637,34],"40937316","gsck",[639,625,34,255,640,34],"40934852","craftoman",[74,625,34,507,11,39],[643,625,42,507,644,34],"40938480","estebank",[646,625,34,507,11,39],"40938848",[648,625,34,392,644,34],"40939101",[650,625,34,392,644,34],"40938397",[],[653,657,662,667,671,676],{"id":654,"name":655,"points":656,"category":20},"40899242","Satyrn",611,{"id":658,"name":659,"points":660,"category":661},"40902012","Sabby",561,"creative",{"id":663,"name":664,"points":665,"category":666},"40916326","BitWHIP",353,"infrastructure",{"id":668,"name":669,"points":670,"category":20},"40904862","Onlook",336,{"id":672,"name":673,"points":674,"category":675},"40881836","Telescope",273,"web_saas",{"id":677,"name":678,"points":679,"category":20},"40913736","Crawlee for Python",254,false,"v2",{"id":683,"name":5,"line":6,"ai":680,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":684,"top":18,"kw":685,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":686,"url":9,"mix":687,"praise":86,"objection":110,"sub":21},40932492,0.04,[24,25,26,27,28],"3330003003303300013233301150352343353103",[32,33,34,32],1794036657625]