e
sv

TCP Üzerinden NVMe Nedir? Nasıl Kullanılır?

tcp uzerinden nvme nedir nasil kullanilir g8JIaFZH | Tekno Deha
avatar

Emir Aydın

  • e 0

    Mutlu

  • e 0

    Eğlenmiş

  • e 0

    Şaşırmış

  • e 0

    Kızgın

  • e 0

    Üzgün

TCP Üzerinden NVMe Nedir? Nasıl Kullanılır?

Oracle Linux UEK 5 (Unbreakable Enterprise Kernel), RDMA (Uzaktan Direkt Bellek Erişimi) teknolojisini kullanarak bir Infiniband yahut Ethernet portu üzerinden, NVMe depolama komutlarının aktarılmasına müsaade veren Fabrics üzerinden NVMe teknolojisini tanıttı. UEK5 U1, NVMe’yi Fibre Channel depolama ağlarını da içerecek formda, Fabrics üzerinden kullanıma sundu. Artık ise UEK 6 ile, TCP üzerinden NVMe kullanıma sunuldu ki bu, RDMA yeteneğine sahip ağ donanımı satın almak zorunda kalmadan Fabric üzerinden NVMe’yi standart bir Ethernet ağı kullanacak halde genişletiyor.

NVMe-TCP nedir?

NVMe Çoklu Kuyruk Modeli, her NVMe denetleyicisinde 64k I/O (Girdi/Çıktı) Gönderme ve Tamamlama Kuyruğunun yanı sıra bir İdare Gönderme Kuyruğu ve Tamamlama Kuyruğu uygular. PCIe irtibatlı bir NVMe denetleyicisi için, bu kuyruklar ana belleğe uygulanır ve hem ana CPU’lar hem de NVMe Denetleyici tarafından paylaşılır. Aygıt şoförü bir G/Ç gönderim kuyruğuna komut yazdığında ve akabinde aygıtı bilgilendirmek için bir kapı zili kaydına yazdığında NVMe aygıtına G/Ç gönderilir. Komut tamamlandığında, aygıt bir G/Ç tamamlama kuyruğuna müellif ve aygıt şoförünü bilgilendirmek için bir kesinti oluşturur.

Ağ üzerinden NVMe bu tasarımı genişletir, böylelikle ana bilgisayar belleğindeki gönderme ve tamamlama kuyrukları uzak kontrolcüde çoğaltılır, böylelikle ana bilgisayar tabanlı kuyruk çifti denetleyici tabanlı bir kuyruk çiftine eşlenir. Ağ topolojileri üzerinden NVMe, kuyruklar tarafından Data Kapsüllerinin yanı sıra ağ genelinde irtibat kurmak için kullanılan Komut ve Cevap Kapsüllerini tanımlar. NVMe-TCP, bu kapsüllerin bir TCP PDU (Protokol Bilgi Birimi) içinde nasıl kapsüllendiğini tanımlar. Her ana bilgisayar tabanlı kuyruk çifti ve bağlı denetleyici tabanlı kuyruk çifti, kendi TCP irtibatıyla eşleşir ve başka bir CPU çekirdeğine atanabilir.


NVMe-TCP Avantajları

  • TCP’nin her yerde bulunan tabiatı. TCP, dünya genelindeki birden fazla bilgi merkezinde zati uygulanmakta olan, kullanımdaki en yaygın ağ transferlerinden biridir.
  • Mevcut ağ altyapısıyla çalışmak üzere tasarlanmıştır. Diğer bir deyişle, ağ altyapısının bakımını kolaylaştıran mevcut ethernet yönlendiricilerinin, anahtarların, NIC’lerin değiştirilmesine gerek yoktur.
  • RDMA tabanlı uygulamalardan farklı olarak, TCP büsbütün yönlendirilebilir ve yüksek performans ve düşük gecikme müddetlerini korurken daha büyük dağıtımlar ve daha uzun aralıklar için çok uygundur.
  • TCP, büyük bir topluluk tarafından faal olarak korunmakta ve geliştirilmektedir.

NVMe-TCP Dezavantajları

  • TCP, CPU kullanımını artırabilir zira sağlama toplamlarının hesaplanması üzere muhakkak süreçler, TCP yığınının bir modülü olarak CPU tarafından yapılmalıdır.
  • TCP, düşük gecikmeyle yüksek performans sağlasa da, RDMA uygulamalarıyla karşılaştırıldığında gecikme, kısmen korunması gereken ek bilgi kopyaları nedeniyle kimi uygulamaları etkileyebilir.

NVMe-TCP Örneğini Ayarlama

UEK6, NVMe varsayılan olarak aktifleştirilmiş halde piyasaya sürüldü, lakin bir yepyeni çekirdek ile denemek için aşağıdaki çekirdek yapılandırma parametreleriyle derlemeniz gerekecek:

  • CONFIG_NVME_TCP
  • CONFIG_NVME_TARGET_TCP = m

Amaç Oluşturma

$ sudo modprobe nvme_tcp
$ sudo modprobe nvmet
$ sudo modprobe nvmet-tcp
$ sudo mkdir /sys/kernel/config/nvmet/subsystems/nvmet-test
$ cd /sys/kernel/config/nvmet/subsystems/nvmet-test
$ echo 1 |sudo tee -a attr_allow_any_host > /dev/null
$ sudo mkdir namespaces/1
$ cd namespaces/1/
$ sudo echo -n /dev/nvme0n1 |sudo tee -a device_path > /dev/null
$ echo 1|sudo tee -a enable > /dev/null

Gaye ana bilgisayarda bir NVMe aygıtına erişiminiz yoksa, bunun yerine bir boş blok aygıt kullanabilirsiniz.

$ sudo modprobe null_blk nr_devices=1
$ sudo ls /dev/nullb0
/dev/nullb0
$ echo -n /dev/nullb0 > device_path
$ echo 1 > enable
$ sudo mkdir /sys/kernel/config/nvmet/ports/1
$ cd /sys/kernel/config/nvmet/ports/1
$ echo 10.147.27.85 |sudo tee -a addr_traddr > /dev/null
$ echo tcp|sudo tee -a addr_trtype > /dev/null
$ echo 4420|sudo tee -a addr_trsvcid > /dev/null
$ echo ipv4|sudo tee -a addr_adrfam > /dev/null
$ sudo ln -s /sys/kernel/config/nvmet/subsystems/nvmet-test/ /sys/kernel/config/nvmet/ports/1/subsystems/nvmet-t

Artık dmesg’de yakalanan aşağıdaki iletisi görmelisiniz:

$ dmesg |grep “nvmet_tcp”
[24457.458325] nvmet_tcp: enabling port 1 (10.147.27.85:4420)

İstemciyi Ayarlama

$ sudo modprobe nvme
$ sudo modprobe nvme-tcp

$ sudo nvme discover -t tcp -a 10.147.27.85 -s 4420
Discovery Log Number of Records 1, Generation counter 3
=====Discovery Log Entry 0======
trtype: tcp
adrfam: ipv4
subtype: nvme subsystem
treq: not specified, sq flow control disable supported
portid: 1
trsvcid: 4420
subnqn: nvmet-test
traddr: 10.147.27.85
sectype: none
$ sudo nvme connect -t tcp -n nvmet-test -a 10.147.27.85 -s 4420

$ sudo nvme list
Node SN Model Namespace Usage Format FW Rev
————- ——————- ————— ——— ———– ——— ——-
/dev/nvme0n1 610d2342db36e701 Linux 1 2.20 GB / 2.20 GB 512 B + 0 B

 

Randıman

NVMe-RDMA ve NVMe-TCP’yi karşılaştırmak için, her biri Oracle Linux (OL8.2) ile UEK6 (v5.4.0-1944) çalıştıran Mellanox ConnectX-5 içeren bir çift Oracle X7-2 ana bilgisayar kullanıldı. RoCEv2 (RDMA) ile bir çift 40 Gb ConnectX-5 ilişki noktası yapılandırıldı, performans testleri yapıldı, bunu kullanmak için tekrar yapılandırıldı ve performans testleri yine çalıştırıldı. Performans yardımcı programı FIO, saniye başına G/Ç (IOPS) ve gecikmeyi ölçmek için kullanıldı.

TCP teknodeha

IOPS için test ederken, 32 kuyruk derinliğine sahip tek iş parçacıklı bir 8k okuma testi, RDMA’nın kıymetli ölçüde TCP’den daha uygun performans gösterdiğini ortaya koydu, fakat NVMe kuyruk modelinden daha düzgün yararlanan ek iş parçacıkları eklendiğinde, TCP IOPS performansı arttı.

Web sitemizdeki benzer içerikli makalelere buradan göz atabilirsiniz.

 

okuyucu yorumlarıOKUYUCU YORUMLARI