Hoodlum said:
It means I believe your statement regarding NTFS delayed write cache, even without a source. As the Microsoft knowledge base makes no mention of this anywhere I have no way of knowing 100% if this is true or not.
My source (and where I learnt pretty much everything about how Windows works under the hood): Microsoft Windows Internals, Fourth Edition.
Page 655 relates specifically to the subject at hand.
Page 683 (and surrounding) discusses write-back caching and "lazy writing" (delayed writes) in great detail.
I quote (p683):
Windows Internals said:
The Cache manager implements a write-back cache with lazy write. This means that data written to files is first stored in memory in cache pages and then written to disk later. Thus, write operations are allowed to accumulate for a short time and are then flushed to disk all at once, reducing the overall number of disk I/O operations.
It goes on to detail some useful Performance Counters, these are (from p684):
Windows Internals said:
Cache: Lazy Write Flushes/sec - number of lazy writer flushes
Cache: Lazy Write Pages/sec - number of pages written by the lazy writer
It also details how applications which don't want any delayed write caching to occur can circumvent the default behavior by using a special option on the CreateFile Win32 API (p684):
Windows Internals said:
Because some applications can't tolerate even momentary delays between writing a file and seeing the updates on disk, the cache manager also supports write-through caching on a per-file object basis; changes are written to disk as soon as they're made. To turn on write-through caching, set the FILE_FLAG_WRITE_THROUGH flag in the call to the CreateFile function. Alternatively, a thread can explicitly flush an open file, by using the Windows FlushFileBuffers function...
I've used this flag numerous times in .NET programming.
Hoodlum said:
Personal experience with both systems has still shown fragmentation worse on the NTFS side. Having done no more than a handful of performance related benchmarks personally and having no access to the code makes it pretty hard for me to pinpoint why this is, though.
Performing direct and literal comparisons between two operating systems running different file systems is always going to be difficult. This is why you must take any "prepared" benchmarks you find on the internet with a large pinch of salt. The only way to really test is to setup a test bed platform running a simulation of the type of workload you expect to put on the systems. But even then, if you *do* find a significant disparity between any modern filesystem on a modern OS then you've probably encountered a problem. Not so much a by-design behaviour.
Hoodlum said:
Surely you must admit they have proven to be quite effective, though?
Not really, not for fragmentation. For performance yes. It's been waaay too hyped up by *nix oriented filesystems. The problem is that in order to make delayed writes have a significant benefit for fragmentation the flush interval must be quite exceptionally high. In the order of several minutes, probably. Maybe more. But then if you do that it is going to seriously hurt if you had a power cut or some other type of failure which resulted in the system not having the chance to flush its caches to hard disk. As with most things, it's a trade between performance vs memory usage vs reliability vs usability. I dare say that the Solaris system you run comparisons with against W7 has far more aggressive default settings in this regard. W7 is probably running them pretty damn conservative given how likely it is to experience a power cut or other failure compared to a typical Solaris system which is likely to have both a RAID controller battery module AND a UPS for the entire machine.
Hoodlum said:
On Defrag: You brought up the UI as an example of why I was a liar. It was absolutely pivotal to the statements you were making. It was wrong and that's the only reason I brought it up.
On fsck: As this was in the context of comparing many filesystems as part of a *nix system (In comparison to Windows 7's NTFS) I think you should have at least some rudimentary knowledge of them before you speak about them, having used them at least once - for example. That is all, the bar is pretty low. I don't think I'm making an unreasonable demand.
This sub-thread is done, I believe.
Hoodlum said:
Having to re-direct the argument away from the topic and onto the character assassination territory of questioning my hypothetical "insecurities" rather than providing any sources or data to back up your own points really shows what I was saying to be correct. Continually avoiding the issue.
See above.
Hoodlum said:
1) I'm sorry but having not known how NTFS handles delayed allocation strangely when even Microsoft do not seem to provide this information is not in the same league as not knowing how to see a fragmentation percentage which is clear for all to see.
2) Could I not make the same argument? I'm no system admin of any kind, period. Never have been. The majority of my career (in IT) was consultancy. Most of that time I spent working for banks. All systems at my current workplace run SL (RHEL based, if you're unfamiliar).
Re #1: Delayed writes is an implementation detail. It has almost nothing to do with the filesystem. For instance, I bet the NTFS 3G driver doesn't bother to implement delayed writes? As it's only intended to serve as compatibility driver. If you read the specification of any filesystem it shouldn't mention delayed writes/lazy writes/allocate-on-flush anywhere. It has nothing to do with the "on disk" bytes that are stored by nor any mandatory programming contract that is provided by the filesystem. That is why if you read documentation on NTFS it will mention it nowhere. Second of all, NTFS doesn't actually implement this detail at all anyway. Because it is handled by Windows higher up in the stack (at the I/O and Cache managers).
I really think you're being argumentative just for the sake of it if you seriously believe that your misunderstanding/ignorance surrounding Windows/NTFS pales in significance to some User Interface ballsup that I made. Vista didn't have the %. Windows 7 does again. Boo hoo. I made a mistake. Get over it, I did.
Hoodlum said:
Firstly you did not even acknowledge your errors and even denied one until I was forced to quote you back to yourself.
I have acknowledged them. They were minor and barely on topic.
Hoodlum said:
Secondly, It was what I perceived to be the reason for the lesser performance (especially has NTFS handles small reads & writes less well), which was apparently not the case. That does not change the fact that any benchmark you can find will show similar results. Earlier I went out of my way to give you a suite you could use to test it yourself, as you did not appear to trust me. This way you can see the same result completely independently.
Let's see some facts and figures for these fresh claims of "NTFS handles small reads & writes less well". Afterall, you've pressured me enough to get my Windows Internals book off the shelf.
What test suite? You mentioned a 9TB database. That's not a test suite. It's an example of a test suite.
Hoodlum said:
You will find it will confirm both lower sequential and random reads & writes when compared to Reiser4, XFS, ext2 (though I omitted ext2 earlier because it is so far behind in feature-set though it is an absolute monster in performance), ext3, ext4 and possibly JFS (Have not tested this one personally). NTFS often comes close with large reads & writes (at least on standard 7200rpm Sata 3gb drives) but tends to fall behind quite a bit when dealing with many small reads & writes, more so in Windows 7 for some reason.
Sources please.
I do fear that (along the previous quote) we're straying off topic once again though.
It strikes me you heard someone discussing NTFS block size defaults compared to rival filesystems.
Hint: All my storage volumes are formatted using 64KB block size NTFS. File copying bliss. I left my OS volume at 4KB though because that tends to just be full of smallish DLL/EXE files.
I did a quick look and it appears the default block size on Solaris in general and indeed for ZFS is 8KB. So of course that will give it an unfair advantage of a Windows 7 machine running a 4KB block size. Both in terms of performance and fragmentation!
Moreover, how can we possibly be sure that these tests aren't benchmarking the operating system (taking into account licensed edition) more than the filesystem?
If this is too challenging you could run a simpler (albeit less scientific) test - Simply copy the same large set of small files from one location to another on an ext 4 volume (running the latest Fedora, Suse, Ubuntu, whatever) then do the same for a large set of large files. Repeat with an NTFS volume in Windows 7; The difference is immediately clear.
YouTube it, or something. If the difference is huge then something is wrong. Because fundamentally the art of I/O and filesystems performance has not changed all that much in the last decade.
But still, all it may prove is that W7 is crap at file copying? I often find myself impressed by the speed of Server 2008. Even browsing network shares is shockingly faster than Vista/W7.
Hoodlum said:
No you haven't. Provide a benchmark or data to back up your claim, anything. This was a main point of dispute for me. I could keep repeating that I was the king of england but that wouldn't make it true either. You haven't even tried to detail its performance strengths and weaknesses because of this and based on your other comments I'm only left to assume you simply don't know them. I've pretty much given up trying to get anything hard out of you at this point.
I've never tried to make claims that it more performant than X, Y, Z. Simply that is very well comparable to rival systems and that it strikes a nice balance that few rival systems do at the moment. I do believe it was yourself that made those rather extravagant claims that X, Y, Z filesystems were faster than NTFS (with no sources or benchmarks).
If I said something like "NTFS is higher performing than X" then yes, I would probably be obilged to back that up. But if you re-read what I wrote it was merely trying to indicate that, contrary to popular belief, NTFS is not as bad or slow as people think. Which was the status quo set by the OP in the thread until I came along to correct it. You didn't seem to like me elevating NTFS' position from where it was.
Hoodlum said:
Again no citation. I have never experienced this to be the case and you have made no effort to provide a source that shows this to be true.
See above for citation from Windows Internals. I should think that any computer scientist should be able to understand that if a filesystem implements a B[+-]tree and uses some form of write caching, that it will have comparable fragmentation characteristics to a rival filesystem that implements those same basic concepts. Sure there will be subtle differences based upon their implementation and configuration, but by and large they can be considered comparable implementations.
Hoodlum said:
If it is so "easy" to access these sources why have you not backed up your claims and instead thought up a reason as to why you shouldn't have to? From the outside this just seems like an admission that you are unable to. (as you are again avoiding it).
See above. Not avoiding it, just didn't feel the need to educate someone who, seemingly, has already been educated at least once.
Hoodlum said:
Again I'm still not 100% on the delayed writes on Windows 7 (having no independent source to confirm this) so if you have a source you could provide to verify that would be great.
Buy the Windows Internals book. Or hell, just fire off an e-mail to Mark Russinovich. He will think that you're pretty silly though (as I do).
Hoodlum said:
No, any topic is going to be one sided with one person their opinion more than anyone else.
I did not believe your final post was neutral/objective and the thread was lacking an opposing voice, so why not? A forum is for discussion, no?
No.
It is for discussion but as I said before, your confrontational posting style is something this thread could have done without. I don't have a problem with someone disagreeing with me. But boy I didn't expect to have a ton of bricks thrown at me.