EVM'nin paralel optimizasyonu: Blok Zinciri performansını artırmanın anahtarı
EVM, Ethereum'in temel yürütme motoru olarak, her zaman işlemleri seri bir şekilde işlemiştir. Bu yöntem basit ve bakımı kolay olsa da, kullanıcı grubunun genişlemesi ve teknolojik ilerlemelerle birlikte performans darboğazı giderek daha belirgin hale gelmiştir. Özellikle Rollup teknolojisinin yaygın olarak kullanıldığı günümüzde, EVM'nin seri yürütmesi, ikinci katman ağlarının gelişimini kısıtlayan önemli bir faktör haline gelmiştir.
Sequencer, Layer2'nin temel bileşeni olarak, tüm hesaplama görevlerini tek bir sunucu şeklinde üstlenir. Diğer modüllerin verimliliği yeterince yüksek olduğunda, Sequencer'ın kendisinin işleme kapasitesi nihai dar boğaz haline gelir. Bazı ekipler DA katmanını ve veri okuma/yazma modülünü optimize ederek Sequencer'ın saniyede yaklaşık 2000 ERC-20 transferi gerçekleştirmesini sağladı. Bu rakam düşük görünmüyor, ancak daha karmaşık işlemlerle karşılaştığında, TPS kesinlikle büyük ölçüde düşecektir. Bu nedenle, işlem işlemenin paralelleştirilmesi gelecekteki gelişim için kaçınılmaz bir eğilim haline gelmektedir.
Ethereum kod yapısında, EVM dışında, stateDB de işlem yürütme ile yakından ilişkili olan temel bileşendir. Ethereum'un hesap durumunu ve veri depolamasını yönetmekten sorumludur. EVM her işlem yürüttüğünde stateDB'deki bazı verileri değiştirir, bu değişiklikler nihayetinde küresel durum ağacında yansır.
stateDB, tüm Ethereum hesaplarının durumunu, normal hesaplar ve sözleşme hesapları dahil olmak üzere, hesap bakiyeleri, akıllı sözleşme kodları gibi bilgileri saklayarak sürdürmektedir. İşlem yürütme sürecinde, stateDB ilgili hesap verilerine okuma ve yazma işlemleri gerçekleştirir ve işlem sona erdikten sonra yeni durumu kalıcı olarak alt veritabanına kaydeder.
Geleneksel seri yürütme modelinde, bir blok içindeki işlemler sırayla işlenir. Her bir işlem, bağımsız bir EVM örneği tarafından belirli işlemleri gerçekleştirir, ancak tüm işlemler aynı stateDB'yi paylaşır. EVM, yürütme sürecinde stateDB ile sık sık etkileşimde bulunarak ilgili verileri okur ve yazar.
Bu sıralı yürütme modunun eksiklikleri oldukça belirgindir: işlemler, yürütülmek için sıraya girmek zorundadır; eğer uzun süren karmaşık sözleşme işlemleri ile karşılaşılırsa, sonraki işlemler zorunlu olarak beklemek zorunda kalır ve donanım kaynaklarından tam olarak yararlanamaz, bu da işleme verimliliğini ciddi şekilde kısıtlar.
Bu darboğazı aşmak için endüstri, EVM'nin çoklu iş parçacığı ile paralel optimizasyon çözümünü önerdi. Temel fikir, birden fazla iş parçacığını aynı anda birden fazla işlemi işlemek için açmaktır, bu da verimliliği önemli ölçüde artırır. Ancak, paralel yürütmenin karşılaştığı en büyük zorluk, durum çakışması sorununu nasıl ele alacağıdır.
Bir projenin EVM için paralel optimizasyon yaklaşımı dikkat çekici. Her bir iş parçacığına bir işlem ve geçici bir durum veritabanı (pending-stateDB) tahsis ettiler. Belirli adımlar aşağıdaki gibidir:
Çoklu iş parçacığı paralel işlem gerçekleştirme, her bir iş parçacığı birbirinden etkilenmez.
Her bir iş parçacığının bağımsız bir pending-stateDB'si vardır, işlem yürütülürken doğrudan küresel stateDB'yi değiştirmez, bunun yerine durum değişikliklerini pending-stateDB'de geçici olarak saklar.
Blok içindeki tüm işlemler tamamlandıktan sonra, EVM pending-stateDB'deki durum değişikliklerini sırasıyla global stateDB'ye senkronize eder.
Bu proje, okuma ve yazma işlemleri için optimizasyonlar da gerçekleştirmiştir:
Okuma işlemi sırasında, EVM önce Pending-state'in ReadSet'ini kontrol eder. Gerekli veriler varsa, doğrudan pending-stateDB'den okur; aksi takdirde, bir önceki bloğun global stateDB'sinden tarihsel durumu okur.
Yazma işlemi doğrudan global stateDB'ye yazılmaz, önce Pending-state'in WriteSet'ine kaydedilir. İşlem tamamlandıktan sonra, çakışma kontrolü ile global stateDB'ye birleştirme denemesi yapılır.
Durum çatışması sorununu çözmek için, bu proje çatışma tespit mekanizmasını uygulamıştır:
Uygulama sürecinde farklı işlemlerin ReadSet ve WriteSet'ini izleyerek, birden fazla işlemin aynı durum öğelerini okuması ve yazması durumunda çelişki olarak kabul edilir.
Çatışan işlemleri yeniden yürütülmesi gerekenler olarak işaretle.
Tüm işlemler tamamlandıktan sonra, birden fazla pending-stateDB değişiklik kaydı global stateDB'ye birleştirilir. Birleştirme başarılı olduktan sonra, nihai durum global durum ağacına gönderilir ve yeni bir durum kökü oluşturulur.
Çoklu iş parçacığı paralel optimizasyonu, özellikle karmaşık akıllı sözleşme işlemleri işlenirken performansı önemli ölçüde artırdı. Araştırmalar, düşük çakışma yüklerinde, referans testlerinin TPS'sinin geleneksel seri yürütmeye göre 3-5 kat arttığını göstermektedir. Yüksek çakışma yüklerinde, teorik olarak tüm optimizasyon yöntemlerinin kullanılması ile bile 60 kat artış sağlanabilir.
Bu EVM çoklu iş parçacığı paralel optimizasyon çözümü, her bir işlem için geçici bir durum deposu tahsis ederek ve farklı iş parçacıklarında paralel olarak çalıştırarak EVM'nin işlem işleme kapasitesini önemli ölçüde artırmıştır. Okuma ve yazma işlemlerinin optimizasyonu ve çatışma tespit mekanizmasının tanıtılması ile durum tutarlılığını sağlarken, işlemlerin büyük ölçekli paralelleştirilmesi sağlanmış ve geleneksel seri yürütme modelinin performans darboğazı etkili bir şekilde çözülmüştür. Bu, Ethereum ekosisteminin gelecekteki genişlemesi için önemli bir temel oluşturur.
Gelecekteki araştırma yönleri, depolama verimliliğinin daha da optimize edilmesi, yüksek çatışma durumlarında işleme çözümlerinin geliştirilmesi ve GPU kullanarak optimizasyon gibi konuları içerebilir. Bu ilerlemeler, Blok Zinciri teknolojisinin sürekli gelişimi için yeni bir ivme sağlayacaktır.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
14 Likes
Reward
14
7
Repost
Share
Comment
0/400
MEVVictimAlliance
· 11h ago
Eş zamanlı hemen hallet, beni öldürdü.
View OriginalReply0
MelonField
· 11h ago
Hala EVM'yi övüyorlar, görünüm kötü.
View OriginalReply0
MetaDreamer
· 11h ago
Performans 60 kat arttı mı? gm yine bir iş alıp harekete geçecek.
View OriginalReply0
TestnetScholar
· 11h ago
Bu kartı, hemen optimize et!
View OriginalReply0
faded_wojak.eth
· 11h ago
Kara paralel olarak Aya doğru!
View OriginalReply0
BugBountyHunter
· 11h ago
Tıkandığında paralel olmalı, içe dönmelisin!
View OriginalReply0
DefiPlaybook
· 11h ago
Bu bottleneck beklemede değil mi? Koşu robotları sevinç içinde.
EVM Paralel Optimizasyonu: Blok Zinciri Performansını 60 Kat Artıran Anahtar Teknoloji
EVM'nin paralel optimizasyonu: Blok Zinciri performansını artırmanın anahtarı
EVM, Ethereum'in temel yürütme motoru olarak, her zaman işlemleri seri bir şekilde işlemiştir. Bu yöntem basit ve bakımı kolay olsa da, kullanıcı grubunun genişlemesi ve teknolojik ilerlemelerle birlikte performans darboğazı giderek daha belirgin hale gelmiştir. Özellikle Rollup teknolojisinin yaygın olarak kullanıldığı günümüzde, EVM'nin seri yürütmesi, ikinci katman ağlarının gelişimini kısıtlayan önemli bir faktör haline gelmiştir.
Sequencer, Layer2'nin temel bileşeni olarak, tüm hesaplama görevlerini tek bir sunucu şeklinde üstlenir. Diğer modüllerin verimliliği yeterince yüksek olduğunda, Sequencer'ın kendisinin işleme kapasitesi nihai dar boğaz haline gelir. Bazı ekipler DA katmanını ve veri okuma/yazma modülünü optimize ederek Sequencer'ın saniyede yaklaşık 2000 ERC-20 transferi gerçekleştirmesini sağladı. Bu rakam düşük görünmüyor, ancak daha karmaşık işlemlerle karşılaştığında, TPS kesinlikle büyük ölçüde düşecektir. Bu nedenle, işlem işlemenin paralelleştirilmesi gelecekteki gelişim için kaçınılmaz bir eğilim haline gelmektedir.
Ethereum kod yapısında, EVM dışında, stateDB de işlem yürütme ile yakından ilişkili olan temel bileşendir. Ethereum'un hesap durumunu ve veri depolamasını yönetmekten sorumludur. EVM her işlem yürüttüğünde stateDB'deki bazı verileri değiştirir, bu değişiklikler nihayetinde küresel durum ağacında yansır.
stateDB, tüm Ethereum hesaplarının durumunu, normal hesaplar ve sözleşme hesapları dahil olmak üzere, hesap bakiyeleri, akıllı sözleşme kodları gibi bilgileri saklayarak sürdürmektedir. İşlem yürütme sürecinde, stateDB ilgili hesap verilerine okuma ve yazma işlemleri gerçekleştirir ve işlem sona erdikten sonra yeni durumu kalıcı olarak alt veritabanına kaydeder.
Geleneksel seri yürütme modelinde, bir blok içindeki işlemler sırayla işlenir. Her bir işlem, bağımsız bir EVM örneği tarafından belirli işlemleri gerçekleştirir, ancak tüm işlemler aynı stateDB'yi paylaşır. EVM, yürütme sürecinde stateDB ile sık sık etkileşimde bulunarak ilgili verileri okur ve yazar.
Bu sıralı yürütme modunun eksiklikleri oldukça belirgindir: işlemler, yürütülmek için sıraya girmek zorundadır; eğer uzun süren karmaşık sözleşme işlemleri ile karşılaşılırsa, sonraki işlemler zorunlu olarak beklemek zorunda kalır ve donanım kaynaklarından tam olarak yararlanamaz, bu da işleme verimliliğini ciddi şekilde kısıtlar.
Bu darboğazı aşmak için endüstri, EVM'nin çoklu iş parçacığı ile paralel optimizasyon çözümünü önerdi. Temel fikir, birden fazla iş parçacığını aynı anda birden fazla işlemi işlemek için açmaktır, bu da verimliliği önemli ölçüde artırır. Ancak, paralel yürütmenin karşılaştığı en büyük zorluk, durum çakışması sorununu nasıl ele alacağıdır.
Bir projenin EVM için paralel optimizasyon yaklaşımı dikkat çekici. Her bir iş parçacığına bir işlem ve geçici bir durum veritabanı (pending-stateDB) tahsis ettiler. Belirli adımlar aşağıdaki gibidir:
Çoklu iş parçacığı paralel işlem gerçekleştirme, her bir iş parçacığı birbirinden etkilenmez.
Her bir iş parçacığının bağımsız bir pending-stateDB'si vardır, işlem yürütülürken doğrudan küresel stateDB'yi değiştirmez, bunun yerine durum değişikliklerini pending-stateDB'de geçici olarak saklar.
Blok içindeki tüm işlemler tamamlandıktan sonra, EVM pending-stateDB'deki durum değişikliklerini sırasıyla global stateDB'ye senkronize eder.
Bu proje, okuma ve yazma işlemleri için optimizasyonlar da gerçekleştirmiştir:
Okuma işlemi sırasında, EVM önce Pending-state'in ReadSet'ini kontrol eder. Gerekli veriler varsa, doğrudan pending-stateDB'den okur; aksi takdirde, bir önceki bloğun global stateDB'sinden tarihsel durumu okur.
Yazma işlemi doğrudan global stateDB'ye yazılmaz, önce Pending-state'in WriteSet'ine kaydedilir. İşlem tamamlandıktan sonra, çakışma kontrolü ile global stateDB'ye birleştirme denemesi yapılır.
Durum çatışması sorununu çözmek için, bu proje çatışma tespit mekanizmasını uygulamıştır:
Uygulama sürecinde farklı işlemlerin ReadSet ve WriteSet'ini izleyerek, birden fazla işlemin aynı durum öğelerini okuması ve yazması durumunda çelişki olarak kabul edilir.
Çatışan işlemleri yeniden yürütülmesi gerekenler olarak işaretle.
Tüm işlemler tamamlandıktan sonra, birden fazla pending-stateDB değişiklik kaydı global stateDB'ye birleştirilir. Birleştirme başarılı olduktan sonra, nihai durum global durum ağacına gönderilir ve yeni bir durum kökü oluşturulur.
Çoklu iş parçacığı paralel optimizasyonu, özellikle karmaşık akıllı sözleşme işlemleri işlenirken performansı önemli ölçüde artırdı. Araştırmalar, düşük çakışma yüklerinde, referans testlerinin TPS'sinin geleneksel seri yürütmeye göre 3-5 kat arttığını göstermektedir. Yüksek çakışma yüklerinde, teorik olarak tüm optimizasyon yöntemlerinin kullanılması ile bile 60 kat artış sağlanabilir.
Bu EVM çoklu iş parçacığı paralel optimizasyon çözümü, her bir işlem için geçici bir durum deposu tahsis ederek ve farklı iş parçacıklarında paralel olarak çalıştırarak EVM'nin işlem işleme kapasitesini önemli ölçüde artırmıştır. Okuma ve yazma işlemlerinin optimizasyonu ve çatışma tespit mekanizmasının tanıtılması ile durum tutarlılığını sağlarken, işlemlerin büyük ölçekli paralelleştirilmesi sağlanmış ve geleneksel seri yürütme modelinin performans darboğazı etkili bir şekilde çözülmüştür. Bu, Ethereum ekosisteminin gelecekteki genişlemesi için önemli bir temel oluşturur.
Gelecekteki araştırma yönleri, depolama verimliliğinin daha da optimize edilmesi, yüksek çatışma durumlarında işleme çözümlerinin geliştirilmesi ve GPU kullanarak optimizasyon gibi konuları içerebilir. Bu ilerlemeler, Blok Zinciri teknolojisinin sürekli gelişimi için yeni bir ivme sağlayacaktır.