5.9. תמיכה ופתרון בעיות
DPDK הוא פרויקט שמתפתח במהירות. בכל מקרה של חיפוש תמיכה ומדריכים נוספים מומלץ מאוד לבדוק תחילה אם הם חלים על הגרסה הנוכחית.
• רשימות דיוור של DPDK38
• עבור OpenVswitch-DPDK OpenStack רשימות דיוור39
• בעיות ידועות באזור Launchpad של DPDK40
• הצטרף לערוצי ה-IRC #DPDK או #openvswitch ב-freenode.
בעיות נובעות לרוב מפרטים קטנים חסרים בהגדרה הכללית. מאוחר יותר, הפרטים החסרים הללו גורמים לבעיות שקשה לאתר אותן לשורש שלהן. נראה כי מקרה שכיח הוא בעיית "לא ניתן היה לפתוח את התקן הרשת dpdk0 (אין מכשיר כזה)". זה קורה מאוחר למדי בעת הגדרת יציאה ב- Open vSwitch עם DPDK. אבל הסיבה העיקרית לרוב היא מוקדם מאוד בהגדרה ובאתחול. הנה דוגמה איך נראה אתחול נכון של התקן - ניתן למצוא זאת ב-syslog/journal בעת הפעלת Open vSwitch עם DPDK מופעל.
ovs-ctl[3560]: EAL: התקן PCI 0000:04:00.1 על שקע NUMA 0 ovs-ctl[3560]: EAL: מנהל התקן בדיקה: 8086:1528 rte_ixgbe_pmd ovs-ctl[3560] P0 זיכרון: EAL:7 ממופה ב-P2140000000 ovs-ctl[3560]: EAL: זיכרון PCI ממופה ב-0x7f2140200000
39 http://openvswitch.org/mlists
40 https://bugs.launchpad.net/ubuntu/+source/dpdk
אם זה חסר, בין אם בגלל כרטיסים שהתעלמו מהם, אתחול כושל או סיבות אחרות, מאוחר יותר לא יהיה מכשיר DPDK להתייחס אליו. לרוע המזל, הרישום מפוזר על פני syslog/journal ויומן openvswitch. כדי לאפשר בדיקה צולבת כאן דוגמה מה ניתן למצוא ביומנים הללו, ביחס לפקודה שהוזנה.
#הערה: יומן זה צולם עם כתוביות dpdk 2.2 ו-openvswitch 2.5:
CMD: שאתה נכנס
SYSLOG: (כולל הודעות EAL ו-OVS) OVS-LOG: (הודעות Openvswitch)
#הכנה
קשר ממשק למנהלי התקנים של DPDK UIO, הפוך את Hugepages לזמין, הפעל את DPDK ב-OVS
CMD: שירות sudo openvswitch-switch הפעלה מחדש
SYSLOG:
2016-01-22T08:58:31.372Z|00003|daemon_unix(monitor)|INFO|pid 3329 מת, נהרג (מופסק), יוצא
2016-01-22T08:58:33.377Z|00002|vlog|INFO|קובץ יומן נפתח /var/log/openvswitch/ovs- vswitchd.log
2016-01-22T08:58:33.381Z|00003|ovs_numa|INFO|גילו 12 ליבות מעבד בצומת NUMA 0 2016-01-22T08:58:33.381Z|00004|1|INFO_num 12CPU ו-2016|OVS_NUM 01-22-08T58:33.381:00005Z|XNUMX|התחבר מחדש|INFO|unix:/var/run/openvswitch/db.sock:
מתחבר ...
2016-01-22T08:58:33.383Z|00006|reconnect|INFO|unix:/var/run/openvswitch/db.sock: connected 2016-01-22T08:58:33.386Z|00007|bridge|INFO|ovs-vswitchd (Open vSwitch) 2.5.0
OVS-LOG:
systemd[1]: עצירת Open vSwitch... systemd[1]: הפסקת Open vSwitch.
systemd[1]: עצירת יחידה פנימית של vSwitch פתוחה... ovs-ctl[3541]: * הרג ovs-vswitchd (3329)
ovs-ctl[3541]: * הרג ovsdb-server (3318) systemd[1]: הופסק פתח את vSwitch Internal Unit. systemd[1]: הפעלת יחידה פנימית של vSwitch פתוחה... ovs-ctl[3560]: * הפעלת ovsdb-server
ovs-vsctl: ovs|00001|vsctl|INFO|נקרא כ-ovs-vsctl --no-wait -- init -- set Open_vSwitch . db-version=7.12.1
ovs-vsctl: ovs|00001|vsctl|INFO|נקרא כ-ovs-vsctl --no-wait set Open_vSwitch . ovs- version=2.5.0 "external-ids:system-id=\"e7c5ba80-bb14-45c1-b8eb-628f3ad03903\"" "system- type=\"Ubuntu\"" "system-version=\"16.04- קסניאל\""
ovs-ctl[3560]: * הגדרת מזהי מערכת Open vSwitch
ovs-ctl[3560]: 2016-01-22T08:58:31Z|00001|dpdk|INFO|לא מסופק -vhost_sock_dir - ברירת המחדל היא /var/run/openvswitch
ovs-vswitchd: ovs|00001|dpdk|INFO|לא מסופק -vhost_sock_dir - ברירת המחדל היא /var/run/ openvswitch
ovs-ctl[3560]: EAL: זוהה lcore 0 כליבה 0 בשקע 0 ovs-ctl[3560]: EAL: זוהה lcore 1 בתור ליבה 1 בשקע 0 ovs-ctl[3560]: EAL: זוהה lcore 2 כליבה 2 בשקע 0 ovs-ctl[3560]: EAL: זוהה את lcore 3 בתור ליבה 3 בשקע 0 ovs-ctl[3560]: EAL: זוהה את lcore 4 בתור ליבה 4 בשקע 0
ovs-ctl[3560]: EAL: זוהה lcore 5 בתור ליבה 5 בשקע 0 ovs-ctl[3560]: EAL: זוהה lcore 6 בתור ליבה 0 בשקע 0 ovs-ctl[3560]: EAL: זוהה lcore 7 כליבה 1 על שקע 0 ovs-ctl[3560]: EAL: זוהה lcore 8 כליבה 2 בשקע 0 ovs-ctl[3560]: EAL: זוהה lcore 9 בתור ליבה 3 בשקע 0 ovs-ctl[3560]: EAL: זוהה lcore 10 בתור ליבה 4 בשקע 0 ovs-ctl[3560]: EAL: זוהה את lcore 11 בתור ליבה 5 בשקע 0
ovs-ctl[3560]: EAL: תומך ב-128 ליבות לוגיות לכל היותר לפי תצורה. ovs-ctl[3560]: EAL: זוהה 12 lcore(s)
ovs-ctl[3560]: EAL: מודולי VFIO לא כולם נטענו, דלג על תמיכת VFIO... ovs-ctl[3560]: EAL: הגדרת זיכרון רציף פיזית...
ovs-ctl[3560]: EAL: שאל אזור וירטואלי של 0x100000000 בתים
ovs-ctl[3560]: EAL: אזור וירטואלי נמצא ב-0x7f2040000000 (גודל = 0x100000000) ovs-ctl[3560]: EAL: מבקש 4 דפים בגודל 1024MB משקע 0
ovs-ctl[3560]: EAL: תדר TSC הוא ~2397202 KHz
ovs-vswitchd[3592]: EAL: תדר TSC הוא ~2397202 KHz
ovs-vswitchd[3592]: EAL: Master lcore 0 מוכן (tid=fc6cbb00;cpuset=[0]) ovs-vswitchd[3592]: EAL: התקן PCI 0000:04:00.0 על שקע NUMA 0
ovs-vswitchd[3592]: EAL: מנהל בדיקה: 8086:1528 rte_ixgbe_pmd
ovs-vswitchd[3592]: EAL: לא מנוהל על ידי מנהל התקן ליבה נתמך, דילג על ovs-vswitchd[3592]: EAL: התקן PCI 0000:04:00.1 בשקע NUMA 0
ovs-vswitchd[3592]: EAL: מנהל הבדיקה של בדיקה: 8086:1528 rte_ixgbe_pmd ovs-vswitchd[3592]: EAL: זיכרון PCI ממופה ב-0x7f2140000000 ovs-vswitchd מופה ב-3592x0f7.
ovs-ctl[3560]: EAL: Master lcore 0 מוכן (tid=fc6cbb00;cpuset=[0]) ovs-ctl[3560]: EAL: התקן PCI 0000:04:00.0 בשקע NUMA 0
ovs-ctl[3560]: EAL: מנהל בדיקה: 8086:1528 rte_ixgbe_pmd
ovs-ctl[3560]: EAL: לא מנוהל על ידי מנהל התקן ליבה נתמך, דילג על ovs-ctl[3560]: EAL: התקן PCI 0000:04:00.1 בשקע NUMA 0
ovs-ctl[3560]: EAL: מנהל בדיקה: 8086:1528 rte_ixgbe_pmd ovs-ctl[3560]: EAL: זיכרון PCI ממופה ב-0x7f2140000000 ovs-ctl[3560]: EAL: זיכרון PCI ממופה ב-0x7f2140200000 ovs-ctl[XNUMX]: EAL: זיכרון PCI ממופה ב-XNUMXxXNUMXfXNUMX
ovs-vswitchd[3592]: PMD: eth_ixgbe_dev_init(): MAC: 4, PHY: 3
ovs-vswitchd[3592]: PMD: eth_ixgbe_dev_init(): יציאה 0 vendorID=0x8086 deviceID=0x1528 ovs-ctl[3560]: PMD: eth_ixgbe_dev_init(): MAC: 4, PHY:
ovs-ctl[3560]: PMD: eth_ixgbe_dev_init(): יציאה 0 vendorID=0x8086 deviceID=0x1528 ovs-ctl[3560]: אזור 0: שם: , phys:0x83fffdec0, len:0x2080,
virt:0x7f213fffdec0, socket_id:0, flags:0
ovs-ctl[3560]: Zone 1: name:<MP_log_history>, phys:0x83fd73d40, len:0x28a0c0, virt:0x7f213fd73d40, socket_id:0, flags:0
ovs-ctl[3560]: אזור 2: שם: , phys:0x83fd43380, len:0x2f700, virt:0x7f213fd43380, socket_id:0, flags:0
ovs-ctl[3560]: * הפעלת ovs-vswitchd
ovs-ctl[3560]: * הפעלת מנהלי OVSDB מרוחקים systemd[1]: הופעל פתח את vSwitch Internal Unit. systemd[1]: הפעלת Open vSwitch... systemd[1]: הופעל פתח vSwitch.
CMD: sudo ovs-vsctl add-br ovsdpdkbr0 -- set bridge ovsdpdkbr0 datapath_type=netdev
SYSLOG:
2016-01-22T08:58:56.344Z|00008|זיכרון|INFO|37256 kB שיא גודל תושב סט לאחר 24.5 שניות
2016-01-22T08:58:56.346Z|00009|ofproto_dpif|INFO|netdev@ovs-netdev: Datapath supports recirculation
2016-01-22T08:58:56.346Z|00010|ofproto_dpif|INFO|netdev@ovs-netdev: אורך ערימת תווית MPLS נבדק כ-3
2016-01-22T08:58:56.346Z|00011|ofproto_dpif|INFO|netdev@ovs-netdev: נתיב נתונים תומך במזהי זרימה ייחודיים
2016-01-22T08:58:56.346Z|00012|ofproto_dpif|INFO|netdev@ovs-netdev: נתיב הנתונים אינו תומך ב-ct_state
2016-01-22T08:58:56.346Z|00013|ofproto_dpif|INFO|netdev@ovs-netdev: נתיב הנתונים אינו תומך ב-ct_zone
2016-01-22T08:58:56.346Z|00014|ofproto_dpif|INFO|netdev@ovs-netdev: נתיב הנתונים אינו תומך ב-ct_mark
2016-01-22T08:58:56.346Z|00015|ofproto_dpif|INFO|netdev@ovs-netdev: נתיב הנתונים אינו תומך ב-ct_label
2016-01-22T08:58:56.360Z|00016|גשר|INFO|גשר ovsdpdkbr0: נוסף ממשק ovsdpdkbr0 ביציאה 65534
2016-01-22T08:58:56.361Z|00017|bridge|INFO|bridge ovsdpdkbr0: using datapath ID 00005a4a1ed0a14d
2016-01-22T08:58:56.361Z|00018|connmgr|INFO|ovsdpdkbr0: בקר שירות נוסף "punix:/ var/run/openvswitch/ovsdpdkbr0.mgmt"
OVS-LOG:
ovs-vsctl: ovs|00001|vsctl|INFO|נקרא כ-ovs-vsctl add-br ovsdpdkbr0 -- set bridge ovsdpdkbr0 datapath_type=netdev
systemd-udevd[3607]: לא ניתן ליצור כתובת MAC קבועה עבור ovs-netdev: אין קובץ או ספרייה כאלה
ליבה: [50165.886554] device ovs-netdev נכנס למצב מופקר ליבה: [50165.901261] device ovsdpdkbr0 נכנס למצב מופקר
CMD: sudo ovs-vsctl add-port ovsdpdkbr0 dpdk0 -- הגדר ממשק dpdk0 type=dpdk
SYSLOG:
2016-01-22T08:59:06.369Z|00019|זיכרון|INFO|שיא גודל הסט תושב גדל ב-155% ב-10.0 השניות האחרונות, מ-37256 קילובייט ל-95008 קילובייט
2016-01-22T08:59:06.369Z|00020|memory|INFO|handlers:4 ports:1 revalidators:2 rules:5 2016-01-22T08:59:30.989Z|00021|dpdk|INFO|Port 0: 8c:dc:d4:b3:6d:e9
2016-01-22T08:59:31.520Z|00022|dpdk|INFO|Port 0: 8c:dc:d4:b3:6d:e9
2016-01-22T08:59:31.521Z|00023|dpif_netdev|INFO|יצר שרשורים של 1 pmd ב-numa node 0 2016-01-22T08:59:31.522Z|00001|dpif_16) יציאה '0|dpif_0)in process | dpdkXNUMX'
2016-01-22T08:59:31.522Z|00024|bridge|INFO|bridge ovsdpdkbr0: הוספת ממשק dpdk0 ביציאה 1
2016-01-22T08:59:31.522Z|00025|bridge|INFO|bridge ovsdpdkbr0: using datapath ID 00008cdcd4b36de9
2016-01-22T08:59:31.523Z|00002|dpif_netdev(pmd16)|INFO|Core 0 processing port 'dpdk0'
OVS-LOG:
ovs-vsctl: ovs|00001|vsctl|INFO|נקרא כ-ovs-vsctl add-port ovsdpdkbr0 dpdk0 -- הגדר ממשק dpdk0 type=dpdk
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a79ebc0 hw_ring=0x7f211a7a6c00 dma_addr=0x81a7a6c00
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f211a78a6c0 sw_sc_ring=0x7f211a786580 hw_ring=0x7f211a78e800 dma_addr=0x81a78e800
ovs-vswitchd[3595]: PMD: ixgbe_set_rx_function(): וקטור rx מופעל, אנא ודא שגודל פרץ RX לא פחות מ-4 (יציאה=0).
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a79ebc0 hw_ring=0x7f211a7a6c00 dma_addr=0x81a7a6c00
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a76e4c0 hw_ring=0x7f211a776500 dma_addr=0x81a776500
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a756440 hw_ring=0x7f211a75e480 dma_addr=0x81a75e480
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a73e3c0 hw_ring=0x7f211a746400 dma_addr=0x81a746400
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a726340 hw_ring=0x7f211a72e380 dma_addr=0x81a72e380
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a70e2c0 hw_ring=0x7f211a716300 dma_addr=0x81a716300
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6f6240 hw_ring=0x7f211a6fe280 dma_addr=0x81a6fe280
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6de1c0 hw_ring=0x7f211a6e6200 dma_addr=0x81a6e6200
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6c6140 hw_ring=0x7f211a6ce180 dma_addr=0x81a6ce180
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a6ae0c0 hw_ring=0x7f211a6b6100 dma_addr=0x81a6b6100
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a696040 hw_ring=0x7f211a69e080 dma_addr=0x81a69e080
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a67dfc0 hw_ring=0x7f211a686000 dma_addr=0x81a686000
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_tx_queue_setup(): sw_ring=0x7f211a665e40 hw_ring=0x7f211a66de80 dma_addr=0x81a66de80
ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): שימוש בנתיב קוד tx פשוט ovs-vswitchd[3595]: PMD: ixgbe_set_tx_function(): וקטור tx מופעל.
ovs-vswitchd[3595]: PMD: ixgbe_dev_rx_queue_setup(): sw_ring=0x7f211a78a6c0 sw_sc_ring=0x7f211a786580 hw_ring=0x7f211a78e800 dma_addr=0x81a78e800
ovs-vswitchd[3595]: PMD: ixgbe_set_rx_function(): וקטור rx מופעל, אנא ודא שגודל פרץ RX לא פחות מ-4 (יציאה=0).
CMD: sudo ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 -- הגדר ממשק vhost-user-1 type=dpdkvhostuser
OVS-LOG:
2016-01-22T09:00:35.145Z|00026|dpdk|INFO|Socket /var/run/openvswitch/vhost-user-1 נוצר עבור יציאת vhost-user vhost-user-1
2016-01-22T09:00:35.145Z|00003|dpif_netdev(pmd16)|INFO|Core 0 processing port 'dpdk0'
2016-01-22T09:00:35.145Z|00004|dpif_netdev(pmd16)|INFO|Core 0 processing port 'vhost-user-1' 2016-01-22T09:00:35.145Z|00027|bridge|INFO|bridge ovsdpdkbr0: added interface vhost-user-1
על יציאה 2
SYSLOG:
ovs-vsctl: ovs|00001|vsctl|INFO|נקרא כ-ovs-vsctl add-port ovsdpdkbr0 vhost-user-1 -- הגדר ממשק vhost-user-1 type=dpdkvhostuser
ovs-vswitchd[3595]: VHOST_CONFIG: שקע נוצר, fd:46
ovs-vswitchd[3595]: VHOST_CONFIG: התחבר ל-/var/run/openvswitch/vhost-user-1
בסופו של דבר נוכל לראות את שרשור הסקר בראש
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ פקודה
3595 root 10 -10 4975344 103936 9916 S 100.0 0.3 33:13.56 ovs-vswitchd