เวลาแฝงภายในศูนย์ข้อมูลคืออะไร ฉันถามสิ่งนี้โดยสมมติว่ามีลำดับความสำคัญต่างกัน


17

ฉันกำลังพยายามหาสิ่งที่ฉันไม่สามารถหาคำตอบที่ดี

ถ้าฉันพูดว่าแคช REDIS (หรือแคชในหน่วยความจำภายนอก) อยู่ในศูนย์ข้อมูลและแอปพลิเคชันเซิร์ฟเวอร์ที่อยู่ในศูนย์ข้อมูลเดียวกันสิ่งที่จะเป็นความเร็วของการเชื่อมต่อเครือข่าย (latency, throughput) สำหรับการอ่านข้อมูล ระหว่างสองเครื่องนี้เหรอ?

ตัวอย่างเช่นเครือข่าย "ความเร็ว" จะยังคงมีขนาดที่สูงกว่าความเร็วของ RAM ที่กำลังค้นหาข้อมูลของฉันจากแคชบน REDIS หรือไม่

คำถามสุดท้ายของฉันคือ - การมีทั้งหมดนี้อยู่ในความทรงจำของ REDIS ที่ให้ประโยชน์ใช้สอยหรือไม่? ตรงกันข้ามกับถ้า REDIS แคชทั้งหมดนี้กับ SSD แทนหรือไม่ หน่วยความจำมีราคาแพง หากเครือข่ายไม่ใช่คอขวดภายในศูนย์ข้อมูลแสดงว่าหน่วยความจำมีค่า มิฉะนั้นจะไม่

ฉันเดาว่าคำถามทั่วไปของฉันคือแม้จะมีผู้ไม่รู้ข้อมูลจำนวนมากในศูนย์ข้อมูลและไม่สามารถที่จะพูดคุยรวมถึงความแปรปรวนได้เรากำลังพูดถึงลำดับความสำคัญที่เพียงพอระหว่างความหน่วงแฝงของหน่วยความจำในระบบคอมพิวเตอร์และแม้กระทั่งเครือข่ายที่ดีที่สุด เวลาแฝงที่ลดลงไม่ได้ให้การปรับปรุงประสิทธิภาพที่สำคัญใช่หรือไม่ ฉันเข้าใจว่ามันมีตัวแปรหลายตัว แต่มันใกล้แค่ไหน? มันใกล้เคียงกับที่ตัวแปรเหล่านี้มีความสำคัญหรือไม่? ตัวอย่างเช่นใช้ท่าทางไฮเพอร์โบลิกบนเทปไดร์ฟช้ากว่าเครือข่ายเทปจึงไม่เหมาะสำหรับแคช


1
นอกจากนี้ยังขึ้นอยู่กับจำนวนของ Roundtrips ต่อการทำธุรกรรมซึ่งมักเป็นปัญหาที่แท้จริงที่คุณได้รับการจัดลำดับในการสอบถาม อินเทอร์เฟซแบบสอบถามที่ซับซ้อนมากขึ้นโพรซีเดอร์ฝั่งเซิร์ฟเวอร์หรือแคช denormalizwd สามารถลดผลกระทบได้
eckes

คำตอบ:


19

"แผนภูมิเวลาแฝงที่ทุกคนควรรู้" มีหลายเวอร์ชันเช่น:

ในความเป็นจริงแล้วมันมีมากกว่าความล่าช้า มันเป็นการรวมกันของปัจจัย

ดังนั้นเวลาแฝงของเครือข่ายภายในศูนย์ข้อมูลคืออะไร ความหน่วงแฝงฉันจะบอกว่ามัน "เสมอ" ต่ำกว่า 1 มิลลิวินาที มันเร็วกว่าแรมหรือเปล่า ไม่มันอยู่ใกล้ RAM หรือเปล่า ฉันไม่คิดอย่างนั้น

แต่คำถามยังคงอยู่มันเกี่ยวข้องหรือไม่ นั่นคือตัวเลขที่คุณต้องรู้หรือไม่? คำถามของคุณสมเหตุสมผลสำหรับฉัน เนื่องจากทุกอย่างมีค่าใช้จ่ายคุณควรได้รับ RAM มากขึ้นเพื่อให้ข้อมูลทั้งหมดอยู่ใน RAM หรือไม่ก็อ่านจากดิสก์เป็นครั้งคราว

"สมมติฐาน" ของคุณคือถ้าเวลาแฝงของเครือข่ายสูงกว่า (ช้ากว่า) ความเร็วของ SSD คุณจะไม่ได้รับข้อมูลทั้งหมดจาก RAM เนื่องจากคุณจะมีเครือข่ายช้า

และมันก็จะปรากฏขึ้น แต่คุณต้องคำนึงถึงการทำงานพร้อมกันด้วย หากคุณได้รับ 1,000 คำขอสำหรับข้อมูลในครั้งเดียวดิสก์สามารถทำ 1,000 คำขอพร้อมกันได้หรือไม่ ไม่แน่นอนดังนั้นจะใช้เวลานานเท่าใดในการตอบสนองคำขอ 1,000 รายการ เมื่อเทียบกับ RAM

มันยากที่จะต้มลงไปเป็นปัจจัยเดียวเช่นภาระหนัก แต่ใช่ถ้าคุณมีการดำเนินการเพียงครั้งเดียวความหน่วงของเครือข่ายจะเป็นไปอย่างที่คุณอาจไม่สังเกตเห็นความแตกต่างของ SSD vs RAM

เช่นเดียวกับจนกระทั่งดิสก์ 12Gbps ปรากฏขึ้นในตลาดลิงค์เครือข่าย 10Gbps จะไม่ถูกโหลดมากเกินไปโดยสตรีมเดียวเนื่องจากดิสก์เป็นคอขวด

แต่โปรดจำไว้ว่าดิสก์ของคุณกำลังทำสิ่งอื่น ๆ อีกมากมายกระบวนการของคุณไม่ใช่กระบวนการเดียวบนเครื่องเครือข่ายของคุณอาจมีสิ่งต่าง ๆ ฯลฯ

นอกจากนี้กิจกรรมบนดิสก์ไม่ได้หมายถึงปริมาณการใช้เครือข่าย แบบสอบถามฐานข้อมูลที่มาจากแอปพลิเคชันไปยังเซิร์ฟเวอร์ฐานข้อมูลเป็นเพียงปริมาณการใช้เครือข่ายที่น้อยมาก การตอบสนองจากเซิร์ฟเวอร์ฐานข้อมูลอาจมีขนาดเล็กมาก (หมายเลขเดียว) หรือมีขนาดใหญ่มาก (พันแถวด้วยหลายเขตข้อมูล) ในการดำเนินการเซิร์ฟเวอร์ (เซิร์ฟเวอร์ฐานข้อมูลหรือไม่) อาจต้องทำหลาย ๆ ดิสก์ค้นหาอ่านและเขียน แต่ส่งเพียงเล็กน้อยกลับไปยังเครือข่าย มันไม่ใช่เน็ตเวิร์กดิสก์แรมแบบหนึ่งต่อหนึ่ง


จนถึงตอนนี้ฉันหลีกเลี่ยงรายละเอียดบางคำถามของคุณ - โดยเฉพาะส่วน Redis

Redis เป็นโอเพ่นซอร์ส (ได้รับอนุญาต BSD), การจัดเก็บโครงสร้างข้อมูลในหน่วยความจำใช้เป็นฐานข้อมูลแคชและนายหน้าข้อความ - https://redis.io/

ตกลงดังนั้นหมายความว่าทุกอย่างอยู่ในความทรงจำ ขออภัยไดรฟ์ SSD ที่รวดเร็วนี้จะไม่ช่วยคุณที่นี่ Redis สามารถเก็บข้อมูลลงในดิสก์ได้ดังนั้นจึงสามารถโหลดลงใน RAM ได้หลังจากรีสตาร์ท นั่นเป็นเพียงการที่จะไม่ "สูญเสียข้อมูล" หรือต้องเปลี่ยนแคชเย็นหลังจากรีสตาร์ท ดังนั้นในกรณีนี้คุณจะต้องใช้ RAM ไม่ว่าจะเกิดอะไรขึ้น คุณจะต้องมี RAM เพียงพอที่จะมีชุดข้อมูลของคุณ RAM ไม่เพียงพอและฉันคิดว่าระบบปฏิบัติการของคุณจะใช้งานswap- อาจไม่ใช่ความคิดที่ดี


ขอบคุณ มันมีประโยชน์แน่นอน มีความแปรปรวนเชิงบริบทมากมายที่นี่ซึ่งมีผลต่อสิ่งนี้ หากเราเพิกเฉยต่อภาระงานหนักสักครู่ดูเหมือนว่าจากคำตอบของคุณว่าความล่าช้าของเครือข่ายเป็นปัญหาคอขวดดังนั้นเวลาในการตอบสนองเพิ่มเติมของ SSD vs RAM นั้นไม่เพียงพอที่จะสำคัญ แต่ตอนนี้ถ้าเราคำนึงถึงภาระหนักความแตกต่างของความล่าช้าของ SSD ที่สัมพันธ์กับ RAM จะเริ่มทบต้นและตอนนี้ RAM จะเปล่งประกาย นี่คือสิ่งที่เกิดขึ้นหรือไม่?
Neeraj Murarka

1
มันยากที่จะต้มให้หนักลงไปในปัจจัยเดียว แต่ใช่ถ้าคุณมีการดำเนินการเพียงครั้งเดียวความหน่วงของเครือข่ายเป็นไปอย่างที่คุณอาจไม่สังเกตเห็นความแตกต่างของ SSD vs RAM เช่นเดียวกับจนกระทั่งดิสก์ 12Gbps ปรากฏขึ้นในตลาดลิงค์เครือข่าย 10Gbps จะไม่ถูกโหลดมากเกินไปโดยสตรีมเดียวเนื่องจากดิสก์เป็นคอขวด แต่โปรดจำไว้ว่าดิสก์ของคุณกำลังทำสิ่งอื่น ๆ อีกมากมายกระบวนการของคุณไม่ได้เป็นเพียงกระบวนการเดียวในเครื่อง ฯลฯ
ETL

1
โปรดทราบว่ามีปัจจัยอื่น ๆ อีกมากมายที่ต้องพิจารณานอกเหนือจากเวลาแฝงโดยเฉพาะอย่างยิ่งบริการที่แท้จริงส่วนใหญ่จำเป็นต้องเรียกใช้อินสแตนซ์ของโปรแกรมเซิร์ฟเวอร์บนเครื่องที่แตกต่างกันดังนั้นปกติ "ทุกอย่างใน RAM ภายในเครื่อง" ไม่ใช่ตัวเลือกที่ใช้งานได้จริง
chrylis -on

แต่ลิงค์เครือข่าย 10g ต่ำสุด เซิร์ฟเวอร์ของฉันเชื่อมต่อกับ backbone ของฉันด้วย 200gigabit (ใช่ลิงก์ 2x100g)
TomTom

3

มีแคชหลายชั้นในระบบคอมพิวเตอร์ การแทรกหนึ่งที่เลเยอร์แอปพลิเคชันอาจเป็นประโยชน์การแคช API และการสืบค้นฐานข้อมูล และอาจเป็นข้อมูลชั่วคราวเช่นเซสชันผู้ใช้

ที่เก็บข้อมูลเช่น Redis ให้บริการดังกล่าวผ่านเครือข่าย (เร็ว) หรือซ็อกเก็ต UNIX (เร็วยิ่งขึ้น) เหมือนกับที่คุณใช้ฐานข้อมูล

คุณต้องวัดประสิทธิภาพการทำงานของแอปพลิเคชันของคุณ แต่ลองทำตัวอย่าง สมมติว่าคำขอของผู้ใช้ทั่วไปนั้นจะทำการค้นหา 5 API ที่ใช้เวลา 50 มิลลิวินาที 250 ms คือเวลาแฝงที่ผู้ใช้ตรวจพบ ตรงกันข้ามกับการแคชผลลัพธ์ แม้ว่าแคชจะอยู่ในโซนความพร้อมใช้งานที่แตกต่างกันทั่วทั้งเมือง ซึ่งจะเป็นการเร่งความเร็ว 5x

ในความเป็นจริงระบบฐานข้อมูลและระบบจัดเก็บข้อมูลมีแคชของตัวเองเช่นกัน อย่างไรก็ตามมักจะเร็วกว่าที่จะได้ผลลัพธ์ที่ดึงมาล่วงหน้ากว่าจะผ่านเอ็นจิ้นฐานข้อมูลและเลเยอร์ของระบบจัดเก็บข้อมูลอีกครั้ง นอกจากนี้เลเยอร์แคชยังช่วยให้สามารถโหลดฐานข้อมูลที่อยู่ด้านหลังได้อย่างมีนัยสำคัญ

สำหรับตัวอย่างของแคชดังกล่าวในการผลิต, การมองไกลเกินกว่าที่บล็อกของโครงสร้างพื้นฐานกองมากเกินบนสถาปัตยกรรม คำขอ HTTP หลายแสนรายการที่สร้างการเข้าชมนับพันครั้งของ Redis นั้นค่อนข้างสำคัญ

หน่วยความจำมีราคาแพง

DRAM ที่เวลาเข้าถึง 100 ns นั้นเร็วกว่าการเก็บข้อมูลถาวรแบบ solid state ประมาณ 100x มันค่อนข้างไม่แพงสำหรับประสิทธิภาพนี้ สำหรับหลาย ๆ แอพพลิเคชั่นแรมอีกเล็กน้อยซื้อความเร็วและเวลาตอบสนองที่มีค่า


คุณช่วยอธิบายได้อย่างชัดเจนว่าคุณคำนวณได้อย่างไรว่าคำค้นหา API ทั้ง 5 ข้อเหล่านั้นใช้เวลา 50 มิลลิวินาที อยู่ภายใต้หน้ากากของแอปพลิเคชันที่กดปุ่มฐานข้อมูลและทำการสืบค้นและคำนวณชุดผลลัพธ์ vs เพียงแค่กดแคชข้ามเมืองที่เกิดขึ้นเพื่อแคชสตริงข้อความค้นหาเป็นคีย์และมีสำเนาแคชของผลลัพธ์นั้น ตั้ง?
Neeraj Murarka

1
ฉันสร้างตัวเลขเหล่านั้นขึ้นมา แต่ใช่ การทำแบบสอบถามและการคำนวณผลลัพธ์อีกครั้งน่าจะช้ากว่าการรับผลลัพธ์ที่คำนวณไว้ล่วงหน้า การใช้งานเช่น Redis มีแนวโน้มที่จะอยู่ในหน่วยความจำเพื่อความง่ายและความเร็ว การข้ามเครือข่าย IP หรือการขนส่งซ็อกเก็ต UNIX นั้นค่อนข้างเร็ว ทั้งหมดที่กล่าวมาสิ่งแคชนี้ไม่จำเป็นสำหรับทุกการออกแบบ
John Mahowald

เข้าใจ ฉันคิดว่าฉันเข้าใจมากหรือน้อย ดูเหมือนว่าในหลายกรณี แต่ไม่ใช่ตลอดเวลาแม้จะเดินทางออกจากดาต้าเซ็นเตอร์ไปยังแคชใกล้เคียงซึ่งอาจอยู่ในรัฐเดียวกับสหรัฐอเมริกา (หรือจังหวัดของแคนาดาและอื่น ๆ ) (อาจเป็นภูมิภาคที่มีความหมายดี) เป็นข้อได้เปรียบที่ยิ่งใหญ่กว่ากระบวนการที่พยายามคำนวณค่าอัลกอริธึมใหม่จากฐานข้อมูลท้องถิ่นของตัวเองหากเป็นจริงจะส่งผลให้เกิดการชนแคช แต่แล้วแคชที่อาจจะนั่งอยู่ห่างไกลไม่ได้มีมูลค่ามากโดยอยู่ในหน่วยความจำ อาจใช้ SSD ได้เช่นกัน
Neeraj Murarka

1
ศูนย์ข้อมูลระยะไกลเป็นกรณีที่เลวร้ายที่สุดโดยเฉพาะอย่างยิ่งระดับแคชน้อยกว่า 1 ms จากลูกค้า บางทีความพร้อมใช้งานโซนเดียวกันหรือแม้กระทั่งในโฮสต์เดียวกัน คุณสามารถแคชไปยังที่เก็บข้อมูลถาวรได้หากต้องการ หรือคุณสามารถใช้ที่เก็บข้อมูลโซลิดสเตตนั้นสำหรับฐานข้อมูลหลักเร่งความเร็วคิวรีทั้งหมดและอาจไม่จำเป็นต้องใช้ระดับแคช มีหลายแบบที่เป็นไปได้
John Mahowald
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.