نحوه ایجاد یک I/O Domain در SUN SPARC
An I/O domain has a direct access to the underlying hardware devices. It is used generally in a case where you want performance improvements avoiding the overheads to access the hardware indirectly through control domain. You can create I/O domain is 2 ways:
1. Using the entire PCIe BUS
2. Using a PCIe end point device
Creating I/O domains using PCIe buses
Now as shown in ther digram we can assign a complete PCI bus(pci_1) to the I/O domain assuming there are no disk or network devices on that bus that is being used by primary domain. We can not share a bus among multiple I/O domains.
Now ensure that the pci_1 bus is not being used by primary domain.
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ niu_0 NIU niu_0 primary niu_1 NIU niu_1 primary pci_0 BUS pci_0 primary pci_1 BUS pci_1 primary ..........
As you can see the primary domain is using pci_1. So we need to remove any device in that bus being used by primary domain. Check for below commands if any device in primary domain is using the bus pci_1. These commands are just as an example. You may have to use some different commands according to your configuration.
primary# ifconfig -a primary# df / primary# ls -l /dev/nxge0 (in case you find nxge0 in the ifconfig -a output) primary# ls -l /dev/rdsk/c0t1d0s0
primary# ldm start-reconf primary primary# ldm remove-io pci_1 primary
Save the configuration as io_conf.
primary# ldm add-config io-domain
reboot the domain for new config to be active
primary# shutdown -i6 -g0 -y
Now setup a new domain
primary# ldm add-domain io_domain primary# ldm add-vcpu 8 io_domain primary# ldm add-memory 4G io_domain primary# ldm set-mau 1 io_domain primary# ldm add-vnet vnet1 primary-vsw0 io_domain
Now add the free pci bus to the domain, bind it and start.
primary# ldm add-io pci_1 io_domain
primary# ldm bind io_domain
primary# ldm start io_domain
Confirm the assignement of pci_1 bus to io_domain
primary# ldm list-io NAME TYPE BUS DOMAIN STATUS ---- ---- --- ------ ------ niu_0 NIU niu_0 primary niu_1 NIU niu_1 primary pci_0 BUS pci_0 primary pci_1 BUS pci_1 io_domain ..........
You should be able to see all the devices of pci_1 bus as well assigned to io_domain.
Creating I/O domains using PCIe end point devices
Now if you have only one PCIe bus in the server you can not use above method. In that case starting Oracle VM server for SPARC ver. 2.0 we can assign individual PCIe end point device to the io domain. As shown in the diagram PCIE3 is assigned to io domain.
primary# ldm start-reconf primary primary# ldm remove-io /SYS/MB/PCIE3 primary ------------------------------------------------------------------------------ Notice: The primary domain is in the process of a delayed reconfiguration. Any changes made to the primary domain will only take effect after it reboots. ------------------------------------------------------------------------------
Save the config as io_conf and reboot the system to activate the new configuratiom
primary# ldm add-config io_conf primary# reboot -- -r
Confirm the assignment in ldm ls-io command output.
Now create a new domain and add this PCIe end point device to the new domain.
primary# ldm add-domain io_domain primary# ldm add-vcpu 8 io_domain primary# ldm add-memory 4G io_domain primary-domain# ldm set-mau 1 io_domain primary# ldm add-vnet vnet1 primary-vsw0 io_domain
# ldm add-io /SYS/MB/PCIE3 io_domain # ldm bind io_domain # ldm start io_domain LDom io_domain started