Thanks for the comments. On Nov 16, 2007 6:58 PM, Theodore Tso <tytso@mit.edu> wrote:Ah ok. I think a generalization of this idea is that when we must mix indirect blocks and data blocks, at least start the search for a free block for them from different parts of the block group. Of course, an added benefit of your suggestion is that the non-metaclustered indirect blocks will likely be close to the metacluster. I think this approach will help fsck but from a design point of view it may not be good for IO performance. E.g., the reason sequential read performance with metaclustering is same as regular is because we prefetch co-located indirect blocks (I have verified this by turning off prefetching). When allocating indirect blocks outside the metacluster using the above scheme, co-location of indirect blocks is still likely but less so. OTOH, by falling back to the old-style allocation routines, we at least make sure that the indirect block is close to its data block which is good for performance. I think both approaches are pretty close. One thumb rule we've followed during metaclustering design is: "when in doubt, favor IO performance over fsck performance" so I tend to lean towards the latter approach. Thanks for this nice visualization :-) I agree with your and Andreas' concern about fragmentation due to the current scheme of putting metacluster in the middle of the block group. Here are some stats concerning different metacluster locations: - Placing metacluster at the end of the block group results in 2% degradation in sequential reads from large files. Putting it at the beginning improves sequential read performance by 0.5%. - For random reads the beginning and ending configurations have idential performance which is almost the same as regular ext3 performance but 1% worse than the middle configuration. - I haven't compared the different metacluster locations for sequential reads from small files, but in general I've found the behavior to be very similar to random reads from a large file. So I think putting metacluster levels at the beginning of the block group is an obvious choice. Thanks, Abhishekj -
| Rafael J. Wysocki | [Bug #11191] 2.6.26-git8: spinlock lockup in c1e_idle() |
| Alan Cox | [PATCH 00/80] TTY updates for 2.6.28 |
| Robin Lee Powell | NFS hang + umount -f: better behaviour requested. |
| Linus Torvalds | Linux 2.6.27 |
git: | |
| Paolo Ciarrocchi | [PATCH] Git homepage: remove all the references to Cogito |
| Denis Bueno | Recovering from repository corruption |
| Randal L. Schwartz | Re: I don't want the .git directory next to my code. |
| Anton Altaparmakov | Re: [howto] Kernel hacker's guide to git, updated |
| Richard Stallman | Real men don't attack straw men |
| Marcos Laufer | dmesg IBM x3650 OpenBSD 4.3 |
| Edd Barrett | Re: TV out for Xorg/OpenBSD? |
| Diana Eichert | Re: Linux Compat Query |
| Jon Nelson | tg3: strange errors and non-working-ness |
| Ilpo Järvinen | Re: TCP connection stalls under 2.6.24.7 |
| Vlad Yasevich | [PATCH 03/13] SCTP: Fix difference cases of retransmit. |
| Tobias Diedrich | Re: [PATCH 2/4] setup wake-on-lan before shutting down |
| Shared swap partition | 11 minutes ago | Linux general |
| usb mic not detected | 4 hours ago | Applications and Utilities |
| Problem in Inserting a module | 5 hours ago | Linux kernel |
| Treason Uncloaked | 10 hours ago | Linux kernel |
| high memory | 2 days ago | Linux kernel |
| semaphore access speed | 2 days ago | Applications and Utilities |
| the kernel how to power off the machine | 2 days ago | Linux kernel |
| Easter Eggs in windows XP | 3 days ago | Windows |
| Root password | 3 days ago | Linux general |
| Where/when DNOTIFY is used? | 3 days ago | Linux kernel |
