EVM Paralelleştirme: Ethereum'un Performans Darboğazını Çözmenin Anahtarı
EVM, Ethereum'in yürütme motoru ve akıllı sözleşme çalışma ortamı olarak en temel bileşenlerinden biridir. Akıllı sözleşmelerin farklı düğümlerde aynı sonuçları almasını sağlamak ve tutarlılık gereksinimlerini karşılamak için sanal makine teknolojisi en iyi seçenek haline gelmiştir. EVM, farklı işletim sistemleri ve cihazlarda akıllı sözleşmeleri aynı şekilde çalıştırarak platformlar arası uyumluluğu garanti eder.
Akıllı sözleşmeler, zincire eklenmeden önce EVM bayt koduna derlenir. EVM, sözleşmeyi yürütürken bu bayt kodlarını sırayla okur ve her bir talimatın belirli bir Gas maliyeti vardır. EVM, her bir talimatın yürütülmesi sırasında Gas tüketimini takip eder ve tüketim miktarı, işlem karmaşıklığına bağlıdır.
Ana yürütme motoru olarak EVM, işlemleri seri bir şekilde işler; tüm işlemler tek bir kuyruğa alınır ve belirli bir sırayla yürütülür. Bu tasarım, basit ve bakımı kolaydır, ancak kullanıcı sayısının artması ve teknolojinin gelişmesiyle birlikte, performans darboğazları giderek belirginleşmektedir, özellikle Layer2'de bu durum daha da belirgin hale gelmektedir.
Layer2'nin ana bileşeni Sequencer için, eğer destekleyici modüllerin verimliliği yeterince yüksekse, nihai darboğaz Sequencer'ın kendisinin verimliliğine bağlı olacaktır. Bir ekip, Sequencer'ı optimize ederek saniyede yaklaşık 2000'den fazla ERC-20 transferi gerçekleştirebilmektedir. Ancak daha karmaşık işlemler için TPS'nin kaçınılmaz olarak büyük ölçüde düşecektir. Bu nedenle, işlem işlemenin paralelleştirilmesi gelecekteki kaçınılmaz bir trend haline gelmektedir.
Ethereum işlem yürütmenin temel bileşeni
EVM dışında, işlem yürütme ile yakından bağlantılı bir diğer temel bileşen stateDB'dir ve bu, Ethereum'un hesap durumunu ve veri depolamasını yönetmek için kullanılır. Ethereum, veritabanı indeksleri olarak Merkle Patricia Trie ağaç yapısını kullanır. Her işlem yürütmesi, stateDB'deki bazı verileri değiştirir ve bu değişiklikler nihayetinde küresel durum ağacında yansıtılır.
stateDB, tüm Ethereum hesap durumlarını, EOA hesapları ve sözleşme hesapları dahil olmak üzere, hesap bakiyelerini, akıllı sözleşme kodlarını ve diğer verileri saklamaktan sorumludur. İşlem yürütme sürecinde, stateDB ilgili hesap verilerini okur ve yazar. İşlem yürütme tamamlandıktan sonra, stateDB yeni durumu kalıcı hale getirmek için alt veritabanına gönderir.
Genel olarak, EVM akıllı sözleşme talimatlarını yorumlamak ve yürütmekten sorumludur, hesaplama sonuçlarına göre blok zinciri durumunu değiştirirken, stateDB ise küresel durum deposu olarak görev yapar ve tüm hesapların ve sözleşmelerin durum değişikliklerini yönetir. İkisi birlikte Ethereum'un işlem yürütme ortamını oluşturur.
Sıralı İcra Sınırlamaları
Ethereum işlemleri iki kategoriye ayrılır: EOA transferleri ve sözleşme işlemleri. EOA transferleri en basit işlem türüdür, hızlı işlem süresi ve düşük gas ücreti ile gerçekleştirilir. Sözleşme işlemleri ise akıllı sözleşmelerin çağrılması ve yürütülmesini içerir; EVM, sözleşme içindeki bytecode talimatlarını satır satır yorumlayıp yürütmek zorundadır, bu da karmaşıklığı ve kaynak tüketimini artırır.
Seri yürütme modunda, blok içindeki işlemler sırasıyla tek tek işlenir. Her bir işlem bağımsız bir EVM örneğine sahiptir, ancak tüm işlemler aynı stateDB'yi paylaşır. EVM yürütme sürecinde sürekli olarak stateDB ile etkileşimde bulunur, verileri okur ve değişiklik sonrası sonuçları yazar.
Bu seri yürütme modunun dar boğazı belirgin: işlemler kuyrukta bekletilmek zorundadır, eğer zaman alıcı bir akıllı sözleşme işlemi gerçekleşirse, diğer işlemler sadece beklemek zorundadır, donanım kaynakları yeterince kullanılamaz ve verimlilik büyük ölçüde sınırlanır.
EVM'nin çoklu iş parçacığı paralel optimizasyonu
Sıralı yürütme sınırlamalarını aşmak için, sektör EVM'nin çoklu iş parçacığı paralel optimizasyon çözümünü önerdi. Bu çözüm, aynı anda birden çok işlem işleyebilen bankaların aynı anda birden fazla gişe ile hizmet vermesi gibi, verimliliği önemli ölçüde artırır. Ancak paralel yürütmenin karşılaştığı ana zorluk durum çatışmasıdır ve bununla başa çıkmak için özel önlemler alınması gerekmektedir.
Bir projenin EVM için paralel optimizasyon yaklaşımı şu şekildedir:
Farklı işlemleri aynı anda işlemek için birden fazla iş parçacığı ayarlayın, iş parçacıkları birbirini etkilemez.
Her bir iş parçacığına bağımsız geçici durum veritabanı (pending-stateDB) tahsis edin. İş parçacıkları işlem gerçekleştirirken, durum değişikliklerini doğrudan global stateDB'yi değiştirmek yerine geçici olarak pending-stateDB'de kaydedin.
Blok içindeki tüm işlemler tamamlandıktan sonra, her bir pending-stateDB'deki durum değişiklikleri sırasıyla global stateDB'ye senkronize edilir. Çakışma yoksa, kayıtlar sorunsuz bir şekilde birleştirilir.
Bu çözüm, okuma ve yazma işlemlerini optimize etti:
Okuma işlemi: Önce Pending-state'in ReadSet'ini kontrol edin, gerek duyulan veriler varsa doğrudan okuyun; aksi takdirde bir önceki bloktaki global stateDB'den tarihi durumu okuyun.
Yazma işlemi: Tüm değişiklikler önce Pending-state'in WriteSet'ine kaydedilir ve işlem tamamlandıktan sonra global stateDB'ye birleştirilmesi denenir.
Durum çelişkisi sorununu çözmek için, çelişki tespit mekanizması getirildi:
Farklı işlemlerin ReadSet ve WriteSet'ini izleyerek, birden fazla işlemin aynı durum öğesini okumaya veya yazmaya çalıştığında çakışma 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'deki değişiklik kayıtları 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.
Araştırmalar, düşük çatışma yüklerinde paralel olarak gerçekleştirilen TPS'nin, geleneksel seri yürütmeye göre 3-5 kat arttığını göstermektedir. Yüksek çatışma yüklerinde ise teorik olarak tam optimize edildiğinde 60 kat artışa kadar ulaşabilir.
Özet
EVM çoklu iş parçacığı paralel optimizasyon çözümü, her bir işlem için geçici bir durum kütüphanesi tahsis ederek ve farklı iş parçacıklarında işlemleri paralel olarak gerçekleştirerek işlem işleme kapasitesini önemli ölçüde artırmıştır. Okuma ve yazma işlemlerinin optimize edilmesi ve çakışma tespit mekanizmasının tanıtılması sayesinde, durum tutarlılığını garanti altına alarak işlemlerin büyük ölçekli paralelleştirilmesi sağlanmış ve geleneksel seri yürütme modelinin performans darboğazı çözülmüştür. Bu, Ethereum Rollup'un gelecekteki gelişimi için önemli bir temel oluşturmuştur.
Gelecekte depolama verimliliğini nasıl optimize edeceğimiz, yüksek çelişki durumlarıyla nasıl başa çıkacağımız ve performansı artırmak için GPU'dan nasıl yararlanacağımız gibi alanları daha da keşfetmek mümkündü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.
6 Likes
Reward
6
6
Share
Comment
0/400
down_only_larry
· 7h ago
yükseliş啦 Vitalik Buterin finalmente anladı
View OriginalReply0
BlockTalk
· 7h ago
İsterseniz izleyin, istemezseniz izlemeyin, sonuçta tps yükseldi.
View OriginalReply0
LiquidityOracle
· 7h ago
Yine göğe üflüyor.
View OriginalReply0
All-InQueen
· 7h ago
Yani, transferler daha hızlı mı oldu?
View OriginalReply0
ProveMyZK
· 7h ago
Bu performans optimizasyonu en üst düzey oyunculara aittir.
View OriginalReply0
SmartContractPlumber
· 8h ago
Doğrudan genişletilebilirlik riskine bakmak, kilit mekanizması tasarımı çok naif.
EVM Paralelleştirme: Ethereum Performansını Artırmanın Kesim Noktası
EVM Paralelleştirme: Ethereum'un Performans Darboğazını Çözmenin Anahtarı
EVM, Ethereum'in yürütme motoru ve akıllı sözleşme çalışma ortamı olarak en temel bileşenlerinden biridir. Akıllı sözleşmelerin farklı düğümlerde aynı sonuçları almasını sağlamak ve tutarlılık gereksinimlerini karşılamak için sanal makine teknolojisi en iyi seçenek haline gelmiştir. EVM, farklı işletim sistemleri ve cihazlarda akıllı sözleşmeleri aynı şekilde çalıştırarak platformlar arası uyumluluğu garanti eder.
Akıllı sözleşmeler, zincire eklenmeden önce EVM bayt koduna derlenir. EVM, sözleşmeyi yürütürken bu bayt kodlarını sırayla okur ve her bir talimatın belirli bir Gas maliyeti vardır. EVM, her bir talimatın yürütülmesi sırasında Gas tüketimini takip eder ve tüketim miktarı, işlem karmaşıklığına bağlıdır.
Ana yürütme motoru olarak EVM, işlemleri seri bir şekilde işler; tüm işlemler tek bir kuyruğa alınır ve belirli bir sırayla yürütülür. Bu tasarım, basit ve bakımı kolaydır, ancak kullanıcı sayısının artması ve teknolojinin gelişmesiyle birlikte, performans darboğazları giderek belirginleşmektedir, özellikle Layer2'de bu durum daha da belirgin hale gelmektedir.
Layer2'nin ana bileşeni Sequencer için, eğer destekleyici modüllerin verimliliği yeterince yüksekse, nihai darboğaz Sequencer'ın kendisinin verimliliğine bağlı olacaktır. Bir ekip, Sequencer'ı optimize ederek saniyede yaklaşık 2000'den fazla ERC-20 transferi gerçekleştirebilmektedir. Ancak daha karmaşık işlemler için TPS'nin kaçınılmaz olarak büyük ölçüde düşecektir. Bu nedenle, işlem işlemenin paralelleştirilmesi gelecekteki kaçınılmaz bir trend haline gelmektedir.
Ethereum işlem yürütmenin temel bileşeni
EVM dışında, işlem yürütme ile yakından bağlantılı bir diğer temel bileşen stateDB'dir ve bu, Ethereum'un hesap durumunu ve veri depolamasını yönetmek için kullanılır. Ethereum, veritabanı indeksleri olarak Merkle Patricia Trie ağaç yapısını kullanır. Her işlem yürütmesi, stateDB'deki bazı verileri değiştirir ve bu değişiklikler nihayetinde küresel durum ağacında yansıtılır.
stateDB, tüm Ethereum hesap durumlarını, EOA hesapları ve sözleşme hesapları dahil olmak üzere, hesap bakiyelerini, akıllı sözleşme kodlarını ve diğer verileri saklamaktan sorumludur. İşlem yürütme sürecinde, stateDB ilgili hesap verilerini okur ve yazar. İşlem yürütme tamamlandıktan sonra, stateDB yeni durumu kalıcı hale getirmek için alt veritabanına gönderir.
Genel olarak, EVM akıllı sözleşme talimatlarını yorumlamak ve yürütmekten sorumludur, hesaplama sonuçlarına göre blok zinciri durumunu değiştirirken, stateDB ise küresel durum deposu olarak görev yapar ve tüm hesapların ve sözleşmelerin durum değişikliklerini yönetir. İkisi birlikte Ethereum'un işlem yürütme ortamını oluşturur.
Sıralı İcra Sınırlamaları
Ethereum işlemleri iki kategoriye ayrılır: EOA transferleri ve sözleşme işlemleri. EOA transferleri en basit işlem türüdür, hızlı işlem süresi ve düşük gas ücreti ile gerçekleştirilir. Sözleşme işlemleri ise akıllı sözleşmelerin çağrılması ve yürütülmesini içerir; EVM, sözleşme içindeki bytecode talimatlarını satır satır yorumlayıp yürütmek zorundadır, bu da karmaşıklığı ve kaynak tüketimini artırır.
Seri yürütme modunda, blok içindeki işlemler sırasıyla tek tek işlenir. Her bir işlem bağımsız bir EVM örneğine sahiptir, ancak tüm işlemler aynı stateDB'yi paylaşır. EVM yürütme sürecinde sürekli olarak stateDB ile etkileşimde bulunur, verileri okur ve değişiklik sonrası sonuçları yazar.
Bu seri yürütme modunun dar boğazı belirgin: işlemler kuyrukta bekletilmek zorundadır, eğer zaman alıcı bir akıllı sözleşme işlemi gerçekleşirse, diğer işlemler sadece beklemek zorundadır, donanım kaynakları yeterince kullanılamaz ve verimlilik büyük ölçüde sınırlanır.
EVM'nin çoklu iş parçacığı paralel optimizasyonu
Sıralı yürütme sınırlamalarını aşmak için, sektör EVM'nin çoklu iş parçacığı paralel optimizasyon çözümünü önerdi. Bu çözüm, aynı anda birden çok işlem işleyebilen bankaların aynı anda birden fazla gişe ile hizmet vermesi gibi, verimliliği önemli ölçüde artırır. Ancak paralel yürütmenin karşılaştığı ana zorluk durum çatışmasıdır ve bununla başa çıkmak için özel önlemler alınması gerekmektedir.
Bir projenin EVM için paralel optimizasyon yaklaşımı şu şekildedir:
Farklı işlemleri aynı anda işlemek için birden fazla iş parçacığı ayarlayın, iş parçacıkları birbirini etkilemez.
Her bir iş parçacığına bağımsız geçici durum veritabanı (pending-stateDB) tahsis edin. İş parçacıkları işlem gerçekleştirirken, durum değişikliklerini doğrudan global stateDB'yi değiştirmek yerine geçici olarak pending-stateDB'de kaydedin.
Blok içindeki tüm işlemler tamamlandıktan sonra, her bir pending-stateDB'deki durum değişiklikleri sırasıyla global stateDB'ye senkronize edilir. Çakışma yoksa, kayıtlar sorunsuz bir şekilde birleştirilir.
Bu çözüm, okuma ve yazma işlemlerini optimize etti:
Okuma işlemi: Önce Pending-state'in ReadSet'ini kontrol edin, gerek duyulan veriler varsa doğrudan okuyun; aksi takdirde bir önceki bloktaki global stateDB'den tarihi durumu okuyun.
Yazma işlemi: Tüm değişiklikler önce Pending-state'in WriteSet'ine kaydedilir ve işlem tamamlandıktan sonra global stateDB'ye birleştirilmesi denenir.
Durum çelişkisi sorununu çözmek için, çelişki tespit mekanizması getirildi:
Tüm işlemler tamamlandıktan sonra, birden fazla pending-stateDB'deki değişiklik kayıtları 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.
Araştırmalar, düşük çatışma yüklerinde paralel olarak gerçekleştirilen TPS'nin, geleneksel seri yürütmeye göre 3-5 kat arttığını göstermektedir. Yüksek çatışma yüklerinde ise teorik olarak tam optimize edildiğinde 60 kat artışa kadar ulaşabilir.
Özet
EVM çoklu iş parçacığı paralel optimizasyon çözümü, her bir işlem için geçici bir durum kütüphanesi tahsis ederek ve farklı iş parçacıklarında işlemleri paralel olarak gerçekleştirerek işlem işleme kapasitesini önemli ölçüde artırmıştır. Okuma ve yazma işlemlerinin optimize edilmesi ve çakışma tespit mekanizmasının tanıtılması sayesinde, durum tutarlılığını garanti altına alarak işlemlerin büyük ölçekli paralelleştirilmesi sağlanmış ve geleneksel seri yürütme modelinin performans darboğazı çözülmüştür. Bu, Ethereum Rollup'un gelecekteki gelişimi için önemli bir temel oluşturmuştur.
Gelecekte depolama verimliliğini nasıl optimize edeceğimiz, yüksek çelişki durumlarıyla nasıl başa çıkacağımız ve performansı artırmak için GPU'dan nasıl yararlanacağımız gibi alanları daha da keşfetmek mümkündür.