+1,
Thanx folks for your efforts on this! I didn't have time to review
everything thoroughly, but my initial pass suggests it looks good or
atleast is safe to merge.
If I find some spare time, I'll test it further and submit a ticket or
so if I encounter any issues.

Good Luck!!!

-Ayush

On Tue, 31 Dec 2024 at 16:39, Hui Fei <feihui.u...@gmail.com> wrote:
>
> Thanks Zander for bringing this discussion again and trying your best to push 
> it forward. It's really a long time since last discussion.
>
> It’s indeed time, +1 for merging phase 1 codes based on the following points
>  - The phase 1 feature has been running at scale within companies for a long 
> time
>  - The long-term plan is clear, and also addressed some questions raised by 
> the community
>  - The testing result of future features on memory and performance
>
> ZanderXu <zande...@apache.org> 于2024年12月31日周二 15:36写道:
>>
>> Hi, everyone:
>>
>> Time to Merge FGL Phase I
>>
>> The PR for FGL Phase I is ready for merging! Please take a moment to review 
>> and cast your vote: https://github.com/apache/hadoop/pull/6762.
>>
>> The FGL Phase I has been running successfully in production for over six 
>> months at Shopee and BOSS Zhipin, with no reported performance or stability 
>> issues. It’s now the right time to merge it into the trunk branch, allowing 
>> us to move forward with Phase II.
>>
>> The global lock remains the default lock mode, but users can enable FGL by 
>> configuring 
>> dfs.namenode.lock.model.provider.class=org.apache.hadoop.hdfs.server.namenode.fgl.FineGrainedFSNamesystemLock.
>>
>> If there are no objections within 7 days, I will propose an official vote.
>>
>> Performance and Memory Usage of Phase I
>>
>> Conclusion:
>>
>> Fine-grained locks do not lead to significant performance improvements.
>>
>> Fine-grained locks do not result in additional memory consumption
>>
>> Reasons:
>>
>> BM operations heavily depend on FS operations: IBR and BR still acquire the 
>> global lock (FSLock and BMLock).
>>
>> FS operations depend on BM operations: Common operations (create, addBlock, 
>> getBlockLocations) also acquire the global lock (FSLock and BMLock).
>>
>> Phase II will bring significant performance improvements by decoupling FS 
>> and BM dependencies and replacing the global FSLock with a fine-grained 
>> IIPLock.
>>
>> Addressing Common Questions
>>
>> Thank you all for raising meaningful questions!
>>
>> I have rewritten the design document to improve clarity. 
>> https://docs.google.com/document/d/1DXkiVxef9wCmICjpZyIQO-yxsgwc4wnf2lTKQ3UXe30/edit?usp=sharing
>>
>> Below is a summary of frequently asked questions and answers:
>>
>> Summary of Questions:
>>
>> Question 1: How is the performance of LockPoolManager?
>>
>> Performance Report:
>>
>> Time to acquire a cached lock: 194 ns
>>
>> Time to acquire a non-cached lock: 1044 ns
>>
>> Time to release an in-use lock: 88 ns
>>
>> Time to release an unused lock: 112 ns
>>
>> Overall Performance:
>>
>> QPS: Over 10 million
>>
>> Time to acquire the IIP lock for a path with depth 10:
>>
>> Fully uncached: 10440 ns + 1120 ns (≈ 11 μs)
>>
>> Fully cached: 1940 ns + 1120 ns (≈ 3 μs)
>>
>> In global lock scenarios, lock wait times are typically in the millisecond 
>> range. Therefor, the cost of acquiring and releasing fine-grained locks can 
>> be ignored.
>>
>> Question 2: How much memory does the FGL consume?
>>
>> Memory Consumption:
>>
>> A single LockResource contains a read-write lock and a counter, totaling 
>> approximately 200 bytes:
>>
>> LockResource: 24 bytes
>>
>> ReentrantReadWriteLock: 150 bytes
>>
>> AtomicInteger: 16 bytes
>>
>> Memory Usage Estimates:
>>
>> 10-level directory depth, 100 handlers
>>
>> 1000 lock resources, approximately 200 KB
>>
>> 10-level directory depth, 1000 handlers
>>
>> 10000 lock resources, approximately 2 MB
>>
>> 1, 000,000 lock resources, approximately 200 MB
>>
>> Conclusion: Memory consumption is negligible.
>>
>> Question 3: What happens if no lock is available in the LockPoolManager?
>>
>> If there are not any available LockResources, two solutions are available:
>>
>> Return a RetryException, prompting the client to retry later.
>>
>> Temporarily increase the lock entity limit, allocate more locks to meet 
>> client requests, and use an asynchronous thread to recycle locks 
>> periodically.
>>
>> We can provide multiple LockPoolManager implementations for users to choose 
>> from based on production environments.
>>
>> Question 4: Regarding the IIPLock lock depth issue, can we consider holding 
>> only the first 3 or 4 levels of directory locks?
>>
>> This approach is not recommended for the following reasons:
>>
>> Cannot maximize concurrency.
>>
>> Limited savings in lock acquisition/release time and memory usage, yielding 
>> insignificant benefits.
>>
>> Question 5: How should attributes like StoragePolicy, ErasureCoding, and 
>> ACL, which can be set on parent or ancestor directory nodes, be handled?
>>
>> ErasureCoding and ACL:
>>
>> When changing node attributes, hold the corresponding INode’s write lock.
>>
>> When using ancestor node attributes, hold the corresponding INode’s read 
>> lock.
>>
>> StoragePolicy:
>>
>> More complex due to its impact on both directory tree operations and Block 
>> operations.
>>
>> To improve performance, commonly used block-related operations (such as 
>> BR/IBR) should not acquire IIPLock
>>
>> Detailed design documentation: 
>> https://docs.google.com/document/d/1DXkiVxef9wCmICjpZyIQO-yxsgwc4wnf2lTKQ3UXe30/edit?tab=t.0#heading=h.96lztsl4mwfk
>>
>> Question 6: How should FGL be implemented for the SNAPSHOT feature?
>>
>> Since the Rename operation on the SNAPSHOT directory is supported, holding 
>> only the write lock of the SNAPSHOT root directory cannot cover the rename 
>> situation, so the thread safety of SNAPSHOT-related operations cannot be 
>> guaranteed
>>
>> It is recommended to use global FS lock to ensure thread safety.
>>
>> Detailed design documentation: 
>> https://docs.google.com/document/d/1DXkiVxef9wCmICjpZyIQO-yxsgwc4wnf2lTKQ3UXe30/edit?tab=t.0#heading=h.sm36p6bfcpec
>>
>> Question 7: How should FGL be implemented for the Symlinks feature?
>>
>> The Target path of Symlinks is a string, and the client performs a second 
>> forward access to the Target path. So the fine-grained lock project requires 
>> no special handling
>>
>> For the createSymlink RPC, the FGL needs to acquire the IIPLocks for both 
>> target and link paths.
>>
>> Question 8: How should FGL be implemented for the reserved feature?
>>
>> The Reserved feature has two usage modes:
>>
>> /.reserved/iNodes/${inode id}
>>
>> /.reserved/raw/${path}
>>
>> INodeId Mode: During the resolvePath phase, obtain the real IIPLock lock via 
>> INodeId.
>>
>> Path Mode: During the resolvePath phase, obtain the real IIPLock lock via 
>> path.
>>
>> Detailed design documentation: 
>> https://docs.google.com/document/d/1DXkiVxef9wCmICjpZyIQO-yxsgwc4wnf2lTKQ3UXe30/edit?tab=t.0#heading=h.h6rcpzkbpanf
>>
>> Question 9: Why is INodeFileLock used as the FGL for BlockInfo?
>>
>> INodeFile and Block have mutual dependencies:
>>
>> INodeFile depends on Block for state and size.
>>
>> Block depends on INodeFile for state and storage policy.
>>
>> Therefore, using INodeFileLock as the fine-grained lock for BlockInfo is a 
>> reasonable choice.
>>
>> Detailed design documentation: 
>> https://docs.google.com/document/d/1DXkiVxef9wCmICjpZyIQO-yxsgwc4wnf2lTKQ3UXe30/edit?tab=t.0#heading=h.zesd6omuu3kr
>>
>> Seeking Community Feedback
>>
>> Your questions and concerns are always welcome.
>>
>> We can discuss them in detail on the Slack Channel: 
>> https://app.slack.com/client/T4S1WH2J3/C06UDTBQ2SH
>>
>> Let’s work together to advance the Fine-Grained Lock project. I believe this 
>> initiative will deliver significant performance improvements to the HDFS 
>> community and help reinvigorate its activity.
>>
>> Wishing everyone a Happy New Year 2025!
>>
>>
>> On Wed, 5 Jun 2024 at 16:17, ZanderXu <zande...@apache.org> wrote:
>>>
>>> I plan to hold a meeting on 2024-06-06 from 3:00 PM - 4:00 PM to share the 
>>> FGL's motivations and some concerns in detail in Chinese.
>>>
>>> The doc is : NameNode Fine-Grained Locking Based On Directory Tree (II)
>>>
>>> The meeting URL is: https://sea.zoom.us/j/94168001269
>>>
>>> You are welcome to this meeting.
>>>
>>> On Mon, 6 May 2024 at 23:57, Hui Fei <feihui.u...@gmail.com> wrote:
>>>>
>>>> BTW, there is a Slack channel hdfs-fgl for this feature. can join it and 
>>>> discuss more details.
>>>>
>>>> Is it necessary to hold a meeting to discuss this? So that we can push it 
>>>> forward quickly. Agreed with ZanderXu, it seems inefficient to discuss 
>>>> details via email list.
>>>>
>>>>
>>>> Hui Fei <feihui.u...@gmail.com> 于2024年5月6日周一 23:50写道:
>>>>>
>>>>> Thanks all
>>>>>
>>>>> Seems all concerns are related to the stage 2. We can address these and 
>>>>> make it more clear before we start it.
>>>>>
>>>>> From development experience, I think it is reasonable to split the big 
>>>>> feature into several stages. And stage 1 is also independent and it also 
>>>>> can be as a minor feature that uses fs and bm locks instead of the global 
>>>>> lock.
>>>>>
>>>>>
>>>>> ZanderXu <zande...@apache.org> 于2024年4月29日周一 15:17写道:
>>>>>>
>>>>>> Thanks @Ayush Saxena <ayush...@gmail.com> and @Xiaoqiao He
>>>>>> <hexiaoq...@apache.org> for your nice questions.
>>>>>>
>>>>>> Let me summarize your concerns and corresponding solutions:
>>>>>>
>>>>>> *1. Questions about the Snapshot feature*
>>>>>> It's difficult to apply the FGL to Snapshot feature,  but we can just 
>>>>>> using
>>>>>> the global FS write lock to make it thread safe.
>>>>>> So if we can identity if a path contains the snapshot feature, we can 
>>>>>> just
>>>>>> using the global FS write lock to protect it.
>>>>>>
>>>>>> You can refer to HDFS-17479
>>>>>> <https://issues.apache.org/jira/browse/HDFS-17479> to get how to identify
>>>>>> it.
>>>>>>
>>>>>> Regarding performance of the operations related to the snapshot features,
>>>>>> we can discuss it in two categories:
>>>>>> Read operations involves snapshots:
>>>>>> The FGL branch uses the global write lock to protect them, the GLOBAL
>>>>>> branch uses the global read lock to protect them. It's hard to conclude
>>>>>> which version has better performance, it depends on the global lock
>>>>>> competition.
>>>>>>
>>>>>> Write operations involves snapshots:
>>>>>> Both FGL and GLOBAL branch use the global write lock to protect them. 
>>>>>> It's
>>>>>> hard to conclude which version has better performance, it depends on the
>>>>>> global lock competition too.
>>>>>>
>>>>>> So I think if namenode load is low, the GLOBAL branch will have a better
>>>>>> performance than FGL; If namenode load is high, the FGL branch may have a
>>>>>> better performance than the GLOBAL, which also depends on the ratio of 
>>>>>> read
>>>>>> and write operations on the SNAPSHOT feature.
>>>>>>
>>>>>> We can do somethings to let end-user to choose a branch with a better
>>>>>> branch according to their business:
>>>>>> First, we need to make the lock mode can be selectable, so that end-user
>>>>>> can choose to use FGL of GLOBAL.
>>>>>> Second, using the global write lock to make operations related to 
>>>>>> snapshot
>>>>>> thread safe as I described in HDFS-17479.
>>>>>>
>>>>>>
>>>>>> *2. Questions about the Symlinks feature*
>>>>>> If Symlink is related to snapshot, we can refer to the solution of the
>>>>>> snapshot;  If Symlink is not related to snapshot, I think it's easy to 
>>>>>> meet
>>>>>> the FGL.
>>>>>> Only createSymlink involves two paths, FGL just need to lock them in the
>>>>>> order to make this operation thread. For other operations, it is the same
>>>>>> as other normal iNode, right?
>>>>>>
>>>>>> If I missed difficult points, please let me know.
>>>>>>
>>>>>>
>>>>>> *3. Questions about Memory Usage of iNode locks*
>>>>>> I think there are too many solutions to limit the memory usage of these
>>>>>> iNode locks, such as: Using a limit capacity lock pool to ensure the
>>>>>> maximum memory usage,  Just holding iNode locks for fixed depth of
>>>>>> directories, etc.
>>>>>>
>>>>>> We can just abstract this LockManager first and then support its
>>>>>> implementation with different ideas, so that we can limit the maximum
>>>>>> memory usage of these iNode locks.
>>>>>> FGL can acquire or lease iNode locks through LockManager.
>>>>>>
>>>>>>
>>>>>> *4. Questions about Performance of acquiring and releasing iNode locks*
>>>>>> We can add some benchmark for LockManager, to test the performance or
>>>>>> acquire and release unblocked locks.
>>>>>>
>>>>>>
>>>>>> *5. Questions about StoragePolicy, ECPolicy, ACL, Quota, etc.*
>>>>>> These policies may be sot on an ancestor node and used by some children
>>>>>> files.  The set operation for these policies will be protected by the
>>>>>> directory tree, since there are all file-related operations.  In addition
>>>>>> to Quota and StoragePolicy, the use of other policies will also be
>>>>>> protected by directory tree, such as ECPolicy and ACL.
>>>>>>
>>>>>> Quota is a little special since its update operations may not be 
>>>>>> protected
>>>>>> by the directory tree, we can assign a locks to each QuotaFeature and use
>>>>>> these locks to make updating operations thread safe. you can refer to
>>>>>> HDFS-17473 <https://issues.apache.org/jira/browse/HDFS-17473> to get some
>>>>>> detailed information.
>>>>>>
>>>>>> StoragePolicy is a little special since it is used not only by 
>>>>>> file-related
>>>>>> operations but also block-related operations.  
>>>>>> ProcessExtraRedundancyBlock
>>>>>> uses storage policy to choose redundancy replicas and
>>>>>> BlockReconstructionWork uses storage policy to choose target DNs. In 
>>>>>> order
>>>>>> to maximize the performance improvement, BR and IBR should only involve 
>>>>>> the
>>>>>> iNodeFile to which the current processing block belongs. These redundancy
>>>>>> blocks can be processed by the Redundancy monitor while holding the
>>>>>> directory tree locks. You can refer to HDFS-17505
>>>>>> <https://issues.apache.org/jira/browse/HDFS-17505> to get more detailed
>>>>>> informations.
>>>>>>
>>>>>> *6. Performance of the phase 1*
>>>>>> HDFS-17506 <https://issues.apache.org/jira/browse/HDFS-17506> is used to 
>>>>>> do
>>>>>> some performance testing for phase 1, and I will complete it later.
>>>>>>
>>>>>>
>>>>>> Discuss solution through mails is not efficient, you can create one
>>>>>> sub-tasks under HDFS-17366
>>>>>> <https://issues.apache.org/jira/browse/HDFS-17366> to describe your
>>>>>> concerns and I will try to give some answers.
>>>>>>
>>>>>> Thanks @Ayush Saxena <ayush...@gmail.com>  and @Xiaoqiao He
>>>>>> <hexiaoq...@apache.org> again.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, 29 Apr 2024 at 02:00, Ayush Saxena <ayush...@gmail.com> wrote:
>>>>>>
>>>>>> > Thanx Everyone for chasing this, Great to see some momentum around FGL,
>>>>>> > that should be a great improvement.
>>>>>> >
>>>>>> > I have some two broad categories:
>>>>>> > ** About the process:*
>>>>>> > I think in the above mails, there are mentions that phase one is 
>>>>>> > complete
>>>>>> > in a feature branch & we are gonna merge that to trunk. If I am 
>>>>>> > catching it
>>>>>> > right, then you can't hit the merge button like that. To merge a 
>>>>>> > feature
>>>>>> > branch. You need to call for a Vote specific to that branch & it 
>>>>>> > requires 3
>>>>>> > binding votes to merge, unlike any other code change which requires 1. 
>>>>>> > It
>>>>>> > is there in our Bylaws.
>>>>>> >
>>>>>> > So, do follow the process.
>>>>>> >
>>>>>> > ** About the feature itself:* (A very quick look at the doc and the 
>>>>>> > Jira,
>>>>>> > so please take it with a grain of salt)
>>>>>> > * The Google Drive link that you folks shared as part of the first 
>>>>>> > mail. I
>>>>>> > don't have access to that. So, please open up the permissions for that 
>>>>>> > doc
>>>>>> > or share the new link
>>>>>> > * Chasing the design doc present on the Jira
>>>>>> > * I think we only have Phase-1 ready, so can you share some metrics 
>>>>>> > just
>>>>>> > for that? Perf improvements just with splitting the FS & BM Locks
>>>>>> > * The memory implications of Phase-1? I don't think there should be any
>>>>>> > major impact on the memory in case of just phase-1
>>>>>> > * Regarding the snapshot stuff, you mentioned taking lock on the root
>>>>>> > itself? Does just taking lock on the snapshot root rather than the FS 
>>>>>> > root
>>>>>> > works?
>>>>>> > * Secondly about the usage of Snapshot or Symlinks, I don't think we
>>>>>> > should operate under the assumptions that they aren't widely used or 
>>>>>> > not,
>>>>>> > we might just not know folks who don't use it widely or they are just 
>>>>>> > users
>>>>>> > not the ones contributing. We can just accept for now, that in those 
>>>>>> > cases
>>>>>> > it isn't optimised and we just lock the entire FS space, which it does 
>>>>>> > even
>>>>>> > today, so no regressions there.
>>>>>> > * Regarding memory usage: Do you have some numbers on how much the 
>>>>>> > memory
>>>>>> > footprint increases?
>>>>>> > * Under the Lock Pool: I think you are assuming there would be very few
>>>>>> > inodes where lock would be required at any given time, so there won't 
>>>>>> > be
>>>>>> > too much heap consumption? I think you are compromising on the 
>>>>>> > Horizontal
>>>>>> > Scalability here. I doubt if your assumption doesn't hold true, under 
>>>>>> > heavy
>>>>>> > read load by concurrent clients accessing different inodes, the 
>>>>>> > Namenode
>>>>>> > will start giving memory troubles, that would do more harm than good.
>>>>>> > Anyway Namenode heap is way bigger problem than anything, so we should 
>>>>>> > be
>>>>>> > very careful increasing load over there.
>>>>>> > * For the Locks on the inodes: Do you plan to have locs for each inode?
>>>>>> > Can we somehow limit that to the depth of the tree? Like currently we 
>>>>>> > take
>>>>>> > lock on the root, have a config which makes us take lock at Level-2 or 
>>>>>> > 3
>>>>>> > (configurable), that might fetch some perf benefits and can be used to
>>>>>> > control the memory usage as well?
>>>>>> > * What is the cost of creating these inode locks? If the lock isn't
>>>>>> > already cached it would incur some cost? Do you have some numbers 
>>>>>> > around
>>>>>> > that? Say I disable caching altogether & then let a test load run, what
>>>>>> > does the perf numbers look like in that case
>>>>>> > * I think we need to limit the size of INodeLockPool, we can't let it 
>>>>>> > grow
>>>>>> > infinitely in case of heavy loads and we need to have some auto
>>>>>> > throttling mechanism for it
>>>>>> > * I didn't catch your Storage Policy problem. If I decode it right, the
>>>>>> > problem is like the policy could be set on an ancestor node & the 
>>>>>> > children
>>>>>> > abide by that & this is the problem, if that is the case then isn't 
>>>>>> > that
>>>>>> > the case with ErasureCoding policies or even ACLs or so? Can you 
>>>>>> > elaborate
>>>>>> > a bit on that.
>>>>>> >
>>>>>> >
>>>>>> > Anyway, regarding the Phase-1. If you share (the perf numbers with 
>>>>>> > proper
>>>>>> > details + Impact on memory if any) for just phase 1 & if they are good,
>>>>>> > then if you call for a branch merge vote for Phase-1 FGL, you have my 
>>>>>> > vote,
>>>>>> > however you'll need to sway the rest of the folks on your own :-)
>>>>>> >
>>>>>> > Good Luck, Nice Work Guys!!!
>>>>>> >
>>>>>> > -Ayush
>>>>>> >
>>>>>> >
>>>>>> > On Sun, 28 Apr 2024 at 18:32, Xiaoqiao He <hexiaoq...@apache.org> 
>>>>>> > wrote:
>>>>>> >
>>>>>> >> Thanks ZanderXu and Hui Fei for your work on this feature. It will be
>>>>>> >> a very helpful improvement for the HDFS module in the next journal.
>>>>>> >>
>>>>>> >> 1. If we need any more review bandwidth, I would like to be involved
>>>>>> >> to help review if possible.
>>>>>> >> 2. From the design document there are still missing some detailed
>>>>>> >> descriptions such as snapshot, symbolic link and reserved etc as 
>>>>>> >> mentioned
>>>>>> >> above. I think it will be helpful for newbies who want to be involved
>>>>>> >> if all corner
>>>>>> >> cases are considered and described.
>>>>>> >> 3. From slack, we plan to check into the trunk at this phase. I am not
>>>>>> >> sure
>>>>>> >> If it is the proper time, following the dev plan there are two steps 
>>>>>> >> left
>>>>>> >> to
>>>>>> >> finish this feature from the design document, right? If that, I think 
>>>>>> >> we
>>>>>> >> should
>>>>>> >> postpone checking in when all plans are ready. Considering that there 
>>>>>> >> are
>>>>>> >> many unfinished tries for this feature in history, I think postpone
>>>>>> >> checking
>>>>>> >> will be the safe way, another way it will involve more rebase cost if 
>>>>>> >> you
>>>>>> >> keep
>>>>>> >> separate dev branch, however I think It is not one difficult thing for
>>>>>> >> you.
>>>>>> >>
>>>>>> >> Good luck and look forward to making that happen soon!
>>>>>> >>
>>>>>> >> Best Regards,
>>>>>> >> - He Xiaoqiao
>>>>>> >>
>>>>>> >> On Fri, Apr 26, 2024 at 3:50 PM Hui Fei <feihui.u...@gmail.com> wrote:
>>>>>> >> >
>>>>>> >> > Thanks for interest and advice on this.
>>>>>> >> >
>>>>>> >> > Just would like to share some info here
>>>>>> >> >
>>>>>> >> > ZanderXu leads this feature and he has spent a lot of time on it. 
>>>>>> >> > He is
>>>>>> >> the main developer in stage 1.  Yuanboliu and Kokonguyen191 also took 
>>>>>> >> some
>>>>>> >> tasks. Other developers (slfan1989 haiyang1987 huangzhaobo99 
>>>>>> >> RocMarshal
>>>>>> >> kokonguyen191) helped review PRs. (Forgive me if I missed someone)
>>>>>> >> >
>>>>>> >> > Actually haiyang1987, Yuanboliu and Kokonguyen191 are also very
>>>>>> >> familiar with this feature. We discussed many details offline.
>>>>>> >> >
>>>>>> >> > Welcome to more people interested in joining the development and 
>>>>>> >> > review
>>>>>> >> of the stage 2 and 3.
>>>>>> >> >
>>>>>> >> >
>>>>>> >> > Zengqiang XU <xuzengqiang5...@gmail.com> 于2024年4月26日周五 14:56写道:
>>>>>> >> >>
>>>>>> >> >> Thanks Shilun for your response:
>>>>>> >> >>
>>>>>> >> >> 1. This is a big and very useful feature, so it really needs more
>>>>>> >> >> developers to get on board.
>>>>>> >> >> 2. This fine grained lock has been implemented based on internal
>>>>>> >> branches
>>>>>> >> >> and has gained benefits by many companies, such as: Meituan, 
>>>>>> >> >> Kuaishou,
>>>>>> >> >> Bytedance, etc.  But it has not been contributed to the community 
>>>>>> >> >> due
>>>>>> >> to
>>>>>> >> >> various reasons, such as there is a big difference between the 
>>>>>> >> >> version
>>>>>> >> of
>>>>>> >> >> the internal branch and the community trunk branch, the internal
>>>>>> >> branch may
>>>>>> >> >> ignore some functions to make FGL clear, and the contribution 
>>>>>> >> >> needs a
>>>>>> >> lot
>>>>>> >> >> of work and will take many times. It means that this solution has
>>>>>> >> already
>>>>>> >> >> been practiced in their prod environment. We have also practiced 
>>>>>> >> >> it in
>>>>>> >> our
>>>>>> >> >> prod environment and gained benefits, and we are also willing to 
>>>>>> >> >> spend
>>>>>> >> a
>>>>>> >> >> lot of time contributing to the community.
>>>>>> >> >> 3. Regarding the benchmark testing, we don't need to pay more
>>>>>> >> attention to
>>>>>> >> >> whether the performance is improved by 5 times, 10 times or 20 
>>>>>> >> >> times,
>>>>>> >> >> because there are too many factors that affect it.
>>>>>> >> >> 4. As I described above, this solution is already  being practiced 
>>>>>> >> >> by
>>>>>> >> many
>>>>>> >> >> companies. Right now, we just need to think about how to implement 
>>>>>> >> >> it
>>>>>> >> with
>>>>>> >> >> high quality and more comprehensively.
>>>>>> >> >> 5. I firmly believe that all problems can be solved as long as the
>>>>>> >> overall
>>>>>> >> >> solution is right.
>>>>>> >> >> 6. I can spend a lot of time leading the promotion of this entire
>>>>>> >> feature
>>>>>> >> >> and I hope more people can join us in promoting it.
>>>>>> >> >> 7. You are always welcome to raise your concerns.
>>>>>> >> >>
>>>>>> >> >>
>>>>>> >> >> Thanks Shilun again, I hope you can help review designs and PRs. 
>>>>>> >> >> Thanks
>>>>>> >> >>
>>>>>> >> >> On Fri, 26 Apr 2024 at 08:00, slfan1989 <slfan1...@apache.org> 
>>>>>> >> >> wrote:
>>>>>> >> >>
>>>>>> >> >> > Thank you for your hard work! This is a very meaningful 
>>>>>> >> >> > improvement,
>>>>>> >> and
>>>>>> >> >> > from the design document, we can see a significant increase in 
>>>>>> >> >> > HDFS
>>>>>> >> >> > read/write throughput.
>>>>>> >> >> >
>>>>>> >> >> > I am happy to see the progress made on HDFS-17384.
>>>>>> >> >> >
>>>>>> >> >> > However, I still have some concerns, which roughly involve the
>>>>>> >> following
>>>>>> >> >> > aspects:
>>>>>> >> >> >
>>>>>> >> >> > 1. While ZanderXu and Hui Fei have deep expertise in HDFS and are
>>>>>> >> familiar
>>>>>> >> >> > with related development details, we still need more community
>>>>>> >> member to
>>>>>> >> >> > review the code to ensure that the relevant upgrades meet
>>>>>> >> expectations.
>>>>>> >> >> >
>>>>>> >> >> > 2. We need more details on benchmarks to ensure that test results
>>>>>> >> can be
>>>>>> >> >> > reproduced and to allow more community member to participate in 
>>>>>> >> >> > the
>>>>>> >> testing
>>>>>> >> >> > process.
>>>>>> >> >> >
>>>>>> >> >> > Looking forward to everything going smoothly in the future.
>>>>>> >> >> >
>>>>>> >> >> > Best Regards,
>>>>>> >> >> > - Shilun Fan.
>>>>>> >> >> >
>>>>>> >> >> > On Wed, Apr 24, 2024 at 3:51 PM Xiaoqiao He 
>>>>>> >> >> > <hexiaoq...@apache.org>
>>>>>> >> wrote:
>>>>>> >> >> >
>>>>>> >> >> >> cc private@h.a.o.
>>>>>> >> >> >>
>>>>>> >> >> >> On Wed, Apr 24, 2024 at 3:35 PM ZanderXu <zande...@apache.org>
>>>>>> >> wrote:
>>>>>> >> >> >> >
>>>>>> >> >> >> > Here are some summaries about the first phase:
>>>>>> >> >> >> > 1. There are no big changes in this phase
>>>>>> >> >> >> > 2. This phase just uses FS lock and BM lock to replace the
>>>>>> >> original
>>>>>> >> >> >> global
>>>>>> >> >> >> > lock
>>>>>> >> >> >> > 3. It's useful to improve the performance, since some 
>>>>>> >> >> >> > operations
>>>>>> >> just
>>>>>> >> >> >> need
>>>>>> >> >> >> > to hold FS lock or BM lock instead of the global lock
>>>>>> >> >> >> > 4. This feature is turned off by default, you can enable it by
>>>>>> >> setting
>>>>>> >> >> >> > dfs.namenode.lock.model.provider.class to
>>>>>> >> >> >> >
>>>>>> >> org.apache.hadoop.hdfs.server.namenode.fgl.FineGrainedFSNamesystemLock
>>>>>> >> >> >> > 5. This phase is very import for the ongoing development of 
>>>>>> >> >> >> > the
>>>>>> >> entire
>>>>>> >> >> >> FGL
>>>>>> >> >> >> >
>>>>>> >> >> >> > Here I would like to express my special thanks to 
>>>>>> >> >> >> > @kokonguyen191
>>>>>> >> and
>>>>>> >> >> >> > @yuanboliu for their contributions.  And you are also welcome 
>>>>>> >> >> >> > to
>>>>>> >> join us
>>>>>> >> >> >> > and complete it together.
>>>>>> >> >> >> >
>>>>>> >> >> >> >
>>>>>> >> >> >> > On Wed, 24 Apr 2024 at 14:54, ZanderXu <zande...@apache.org>
>>>>>> >> wrote:
>>>>>> >> >> >> >
>>>>>> >> >> >> > > Hi everyone
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > All subtasks of the first phase of the FGL have been 
>>>>>> >> >> >> > > completed
>>>>>> >> and I
>>>>>> >> >> >> plan
>>>>>> >> >> >> > > to merge them into the trunk and start the second phase 
>>>>>> >> >> >> > > based
>>>>>> >> on the
>>>>>> >> >> >> trunk.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > Here is the PR that used to merge the first phases into 
>>>>>> >> >> >> > > trunk:
>>>>>> >> >> >> > > https://github.com/apache/hadoop/pull/6762
>>>>>> >> >> >> > > Here is the ticket:
>>>>>> >> https://issues.apache.org/jira/browse/HDFS-17384
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > I hope you can help to review this PR when you are available
>>>>>> >> and give
>>>>>> >> >> >> some
>>>>>> >> >> >> > > ideas.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > HDFS-17385 
>>>>>> >> >> >> > > <https://issues.apache.org/jira/browse/HDFS-17385>
>>>>>> >> is
>>>>>> >> >> >> used for
>>>>>> >> >> >> > > the second phase and I have created some subtasks to 
>>>>>> >> >> >> > > describe
>>>>>> >> >> >> solutions for
>>>>>> >> >> >> > > some problems, such as: snapshot, getListing, quota.
>>>>>> >> >> >> > > You are welcome to join us to complete it together.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > ---------- Forwarded message ---------
>>>>>> >> >> >> > > From: Zengqiang XU <zande...@apache.org>
>>>>>> >> >> >> > > Date: Fri, 2 Feb 2024 at 11:07
>>>>>> >> >> >> > > Subject: Discussion about NameNode Fine-grained locking
>>>>>> >> >> >> > > To: <hdfs-dev@hadoop.apache.org>
>>>>>> >> >> >> > > Cc: Zengqiang XU <xuzengqiang5...@gmail.com>
>>>>>> >> >> >> > >
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > Hi everyone
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > I have started a discussion about NameNode Fine-grained 
>>>>>> >> >> >> > > Locking
>>>>>> >> to
>>>>>> >> >> >> improve
>>>>>> >> >> >> > > performance of write operations in NameNode.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > I started this discussion again for serval main reasons:
>>>>>> >> >> >> > > 1. We have implemented it and gained nearly 7x performance
>>>>>> >> >> >> improvement in
>>>>>> >> >> >> > > our prod environment
>>>>>> >> >> >> > > 2. Many other companies made similar improvements based on 
>>>>>> >> >> >> > > their
>>>>>> >> >> >> internal
>>>>>> >> >> >> > > branch.
>>>>>> >> >> >> > > 3. This topic has been discussed for a long time, but still
>>>>>> >> without
>>>>>> >> >> >> any
>>>>>> >> >> >> > > results.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > I hope we can push this important improvement in the 
>>>>>> >> >> >> > > community
>>>>>> >> so
>>>>>> >> >> >> that all
>>>>>> >> >> >> > > end-users can enjoy this significant improvement.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > I'd really appreciate you can join in and work with me to 
>>>>>> >> >> >> > > push
>>>>>> >> this
>>>>>> >> >> >> > > feature forward.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > Thanks very much.
>>>>>> >> >> >> > >
>>>>>> >> >> >> > > Ticket: HDFS-17366 <
>>>>>> >> https://issues.apache.org/jira/browse/HDFS-17366>
>>>>>> >> >> >> > > Design: NameNode Fine-grained locking based on directory 
>>>>>> >> >> >> > > tree
>>>>>> >> >> >> > > <
>>>>>> >> >> >>
>>>>>> >> https://docs.google.com/document/d/1X499gHxT0WSU1fj8uo4RuF3GqKxWkWXznXx4tspTBLY/edit?usp=sharing
>>>>>> >> >> >> >
>>>>>> >> >> >> > >
>>>>>> >> >> >>
>>>>>> >> >> >>
>>>>>> >> ---------------------------------------------------------------------
>>>>>> >> >> >> To unsubscribe, e-mail: private-unsubscr...@hadoop.apache.org
>>>>>> >> >> >> For additional commands, e-mail: private-h...@hadoop.apache.org
>>>>>> >> >> >>
>>>>>> >> >> >>
>>>>>> >>
>>>>>> >> ---------------------------------------------------------------------
>>>>>> >> To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
>>>>>> >> For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org
>>>>>> >>
>>>>>> >>

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-dev-h...@hadoop.apache.org


Reply via email to