Post by max on Jan 22, 2017 11:42:47 GMT
Currently some Redfish implementations are very slow.
Keep in mind that with Redfish client software may have to send multiple requests to perform the action they want.
E.g. our server provisioning software may just want to tell the server to perform a PXE network boot.
But since there is not any convenient shortcut command in Redfish to do that, it has to send up to 5 separate requests instead:
1) see what the id of the system is by fetching: /redfish/v1/Systems
2) patch the BootSourceOverrideTarget to Pxe at: /redfish/v1/Systems/{id of system}
3) determine what ResetTypes are supported by fetching: /redfish/v1/Systems/{id of system}
4) post to /redfish/v1/Systems/{id of system}/Actions/ComputerSystem.Reset
- using "ForceRestart" if that is supported
- or if not make two requests. "ForceOff" first, followed by "On" some seconds later.
Especially if HTTP basic authentication is used each individual request takes ages on some implementations.
To demonstrate the problem, this is how long it takes to just to fetch the /redfish/v1 endpoint -for which authentication is optional- without and with sending the password:
Keep in mind that with Redfish client software may have to send multiple requests to perform the action they want.
E.g. our server provisioning software may just want to tell the server to perform a PXE network boot.
But since there is not any convenient shortcut command in Redfish to do that, it has to send up to 5 separate requests instead:
1) see what the id of the system is by fetching: /redfish/v1/Systems
2) patch the BootSourceOverrideTarget to Pxe at: /redfish/v1/Systems/{id of system}
3) determine what ResetTypes are supported by fetching: /redfish/v1/Systems/{id of system}
4) post to /redfish/v1/Systems/{id of system}/Actions/ComputerSystem.Reset
- using "ForceRestart" if that is supported
- or if not make two requests. "ForceOff" first, followed by "On" some seconds later.
Especially if HTTP basic authentication is used each individual request takes ages on some implementations.
To demonstrate the problem, this is how long it takes to just to fetch the /redfish/v1 endpoint -for which authentication is optional- without and with sending the password:
$ time curl --insecure https://192.168.178.12/redfish/v1
{"@odata.context":"/redfish/v1/$metadata#ServiceRoot.ServiceRoot","@odata.id":"/redfish/v1","@odata.type":"#ServiceRoot.v1_0_2.ServiceRoot","AccountService":{"@odata.id":"/redfish/v1/Managers/iDRAC.Embedded.1/AccountService"},"Chassis":{"@odata.id":"/redfish/v1/Chassis"},"Description":"Root Service","EventService":{"@odata.id":"/redfish/v1/EventService"},"Id":"RootService","JsonSchemas":{"@odata.id":"/redfish/v1/JSONSchemas"},"Links":{"Sessions":{"@odata.id":"/redfish/v1/Sessions"}},"Managers":{"@odata.id":"/redfish/v1/Managers"},"Name":"Root Service","RedfishVersion":"1.0.2","Registries":{"@odata.id":"/redfish/v1/Registries"},"SessionService":{"@odata.id":"/redfish/v1/SessionService"},"Systems":{"@odata.id":"/redfish/v1/Systems"},"Tasks":{"@odata.id":"/redfish/v1/TaskService"}}
real 0m0.476s
user 0m0.052s
sys 0m0.016s
$ time curl --insecure -u root:mypassword https://192.168.178.12/redfish/v1
{"@odata.context":"/redfish/v1/$metadata#ServiceRoot.ServiceRoot","@odata.id":"/redfish/v1","@odata.type":"#ServiceRoot.v1_0_2.ServiceRoot","AccountService":{"@odata.id":"/redfish/v1/Managers/iDRAC.Embedded.1/AccountService"},"Chassis":{"@odata.id":"/redfish/v1/Chassis"},"Description":"Root Service","EventService":{"@odata.id":"/redfish/v1/EventService"},"Id":"RootService","JsonSchemas":{"@odata.id":"/redfish/v1/JSONSchemas"},"Links":{"Sessions":{"@odata.id":"/redfish/v1/Sessions"}},"Managers":{"@odata.id":"/redfish/v1/Managers"},"Name":"Root Service","RedfishVersion":"1.0.2","Registries":{"@odata.id":"/redfish/v1/Registries"},"SessionService":{"@odata.id":"/redfish/v1/SessionService"},"Systems":{"@odata.id":"/redfish/v1/Systems"},"Tasks":{"@odata.id":"/redfish/v1/TaskService"}}
real 0m6.192s
user 0m0.044s
sys 0m0.016s