Redfish on OpenBMC

Hariharasubramanian Ramasubramanian hramasub at in.ibm.com
Fri Feb 23 14:15:37 AEDT 2018


Sound like we are ready for a take off :-)


2PM PST(1:30AM IST) is a little inconvenient. My votes are for the below
times:
      > 		 Wed evening 9pm CST
      > 		 Thursday morning 9am CST
      > 		 Friday 8am CST

Also BlueJeans is a paid offering. Zoom probably would suit us better if we
can limit our meetings to 40 mins.

Michael & me had an irc conversation earlier and my thoughts align with Ed.
My wishlist was:

      1) Targeted discussion with the contributors. (irc/webex/whatever
      else works).
      2) Setting up the wiki for documenting our discussions.
      3) Get the contributors code onto github and review
      4) A hackathon may be to "add a new resource" using each of the
      implementations.

regards,
Hari !



From:	Ali Larijani <alirhas at microsoft.com>
To:	"Tanous, Ed" <ed.tanous at intel.com>, "Michael.E.Brown at dell.com"
            <Michael.E.Brown at dell.com>, Yugi Mani <yupalani at microsoft.com>
Cc:	"Paul.Vancil at dell.com" <Paul.Vancil at dell.com>,
            "hramasub at in.ibm.com" <hramasub at in.ibm.com>,
            "Balaji.B.Rao at dell.com" <Balaji.B.Rao at dell.com>,
            "bradleyb at fuzziesquirrel.com" <bradleyb at fuzziesquirrel.com>,
            "jwcarman at us.ibm.com" <jwcarman at us.ibm.com>,
            "openbmc at lists.ozlabs.org" <openbmc at lists.ozlabs.org>,
            "pradeep.kumar36 at tcs.com" <pradeep.kumar36 at tcs.com>,
            "rolfb at us.ibm.com" <rolfb at us.ibm.com>, Chris Ong
            <Chris.Ong at microsoft.com>
Date:	02/23/2018 08:19 AM
Subject:	RE: Redfish on OpenBMC



Thanks Ed, your agenda looks very good to me.

If it works for everybody, let's schedule a meeting on Monday 2/26 next
week at 2pm PST as a kick-off, and we can discuss time/frequency, agenda,
etc...during that meeting.



Regards,

Ali



-----Original Message-----

From: Tanous, Ed <ed.tanous at intel.com>

Sent: Thursday, February 22, 2018 2:31 PM

To: Michael.E.Brown at dell.com; Ali Larijani <alirhas at microsoft.com>; Yugi
Mani <yupalani at microsoft.com>

Cc: Paul.Vancil at dell.com; hramasub at in.ibm.com; Balaji.B.Rao at dell.com;
bradleyb at fuzziesquirrel.com; jwcarman at us.ibm.com; openbmc at lists.ozlabs.org;
pradeep.kumar36 at tcs.com; rolfb at us.ibm.com; Chris Ong
<Chris.Ong at microsoft.com>

Subject: RE: Redfish on OpenBMC



Hah, you guys beat me to it.



My preference would be Monday at 4pm CST, 2PM PST, but I think I can make
any of them that aren't Wednesday.



Also, If I'm reading this correct, this email only went out to a few of us.
Once we have a time, we should post it to the main email list as well.

I'm also happy to host if Michael can't.  BlueJeans seemed to work quite
well for the TSC meetings, so I was thinking of doing that for sharing.





 Here was the email I was typing up yesterday:



I’d like to start a Redfish working group for OpenBMC.



Primary goals of this working group will be:

1.		 Disseminate information on various redfish implementations for
OpenBMC

2.		 Discuss technical requirements and implementation specifics

3.		 Make an effort to consolidate work on a “phosphor” OpenBMC
redfish implementation



Initial Agenda for the first meeting will be



Initial introductions

Overview of existing implementations and work

		 Bmcweb implementation by Intel – Ed Tanous

		 Go-redfish implementation by Dell – Michael Brown

		 Redfish implementation by Microsoft – Ali Larijani/Yugi
Mani/Bryan Kelly

		 Others?



Meeting time and frequency.

		 Daily/Weekly/monthly/quarterly?

		 What times work for the most people?



Consolidated requirements

		 Do we want/need them?

		 How will we handle them?

		 How will we discuss architectural changes?



Language choice

		 Python/C++/Golang preferences?



Other Topics?



> -----Original Message-----

> From: Michael.E.Brown at dell.com [mailto:Michael.E.Brown at dell.com]

> Sent: Thursday, February 22, 2018 2:03 PM

> To: alirhas at microsoft.com; yupalani at microsoft.com

> Cc: Paul.Vancil at dell.com; hramasub at in.ibm.com; Balaji.B.Rao at dell.com;

> bradleyb at fuzziesquirrel.com; Tanous, Ed <ed.tanous at intel.com>;

> jwcarman at us.ibm.com; openbmc at lists.ozlabs.org;

> pradeep.kumar36 at tcs.com; rolfb at us.ibm.com; Chris.Ong at microsoft.com

> Subject: RE: Redfish on OpenBMC

>

> Yes, I think it would be valuable to have a call. Do you have a time

> proposal? I can host from Dell skype.

>

> Proposed time slots. Here are a variety that personally work ok for me.

> Votes?

> 		 Monday 4pm CST

> 		 Wed evening 9pm CST

> 		 Thursday morning 9am CST

> 		 Thursday 12pm CST

> 		 Friday 8am CST

> --

> Michael

>

> -----Original Message-----

> From: Ali Larijani [mailto:alirhas at microsoft.com]

> Sent: Thursday, February 22, 2018 3:54 PM

> To: Brown, Michael E <Michael_E_Brown at Dell.com>; Yugi Mani

> <yupalani at microsoft.com>

> Cc: Vancil, Paul <Paul_Vancil at Dell.com>; hramasub at in.ibm.com; Rao,

> Balaji B <Balaji_B_Rao at dell.com>; bradleyb at fuzziesquirrel.com;

> ed.tanous at intel.com; jwcarman at us.ibm.com; openbmc at lists.ozlabs.org;

> pradeep.kumar36 at tcs.com; rolfb at us.ibm.com; Chris Ong

> <Chris.Ong at microsoft.com>

> Subject: RE: Redfish on OpenBMC

>

> Hi everybody,

> Can I propose we get together on a call to discuss a  plan moving

> forward with Redfish implementation?

> Do you see any value of having a weekly sync up call?

>

> Thanks

> Ali

> -----Original Message-----

> From: Michael E Brown <Michael.E.Brown at dell.com>

> Sent: Wednesday, February 14, 2018 11:37 AM

> To: Yugi Mani <yupalani at microsoft.com>

> Cc: Ali Larijani <alirhas at microsoft.com>; Paul.Vancil at dell.com;

> hramasub at in.ibm.com; Michael.E.Brown at dell.com; Balaji.B.Rao at dell.com;

> bradleyb at fuzziesquirrel.com; ed.tanous at intel.com; jwcarman at us.ibm.com;

> openbmc at lists.ozlabs.org; pradeep.kumar36 at tcs.com; rolfb at us.ibm.com;

> Chris Ong <Chris.Ong at microsoft.com>

> Subject: Re: Redfish on OpenBMC

>

> Stats for go-redfish running on Nuvoton Poleg. First, processor stats.

> Since we agreed on AST2500 as the baseline, I don't have one of those

> to do benchmarks. If somebody could run the benchmarks on an AST2500

> that would be very helpful.

>

> $ cat /proc/cpuinfo

> processor       : 0

> model name      : ARMv7 Processor rev 1 (v7l)

> BogoMIPS        : 1594.16

> Features        : half thumb fastmult edsp tls

> CPU implementer : 0x41

> CPU architecture: 7

> CPU variant     : 0x4

> CPU part        : 0xc09

> CPU revision    : 1

>

> processor       : 1

> model name      : ARMv7 Processor rev 1 (v7l)

> BogoMIPS        : 1594.16

> Features        : half thumb fastmult edsp tls

> CPU implementer : 0x41

> CPU architecture: 7

> CPU variant     : 0x4

> CPU part        : 0xc09

> CPU revision    : 1

>

> Hardware        : NPCMX50 Chip family

> Revision        : 0000

> Serial          : 0000000000000000

>

> Go-redfish was checked out per the readme on

>
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_superchalupa_go-2Dredfish&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=pH43eFdHEcrwxCxoIddEpbqszBn5JkXE8WT1-pzfg5U&m=0V5mbubQ_XiZn1wp-lyxRsX_oDp_ZU7L7TB3taw6jnY&s=Jx5_QlMbwpuLrpxlue61p7uHJvoIZLLO-UiRz_Eohlk&e=
 and built like this:

>

> $ BUILD_TAGS="spacemonkey" ./scripts/build-arm-obmc.sh

>

> Using the 'openssl' based HTTPS support because it's faster on 32-bit
ARM.

> For x86 and 64-bit ARM, go native SSL is almost equal in performance.

> Read the readme for details.

>

> I use a benchmark tool called 'hey':
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_rakyll_hey&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=pH43eFdHEcrwxCxoIddEpbqszBn5JkXE8WT1-pzfg5U&m=0V5mbubQ_XiZn1wp-lyxRsX_oDp_ZU7L7TB3taw6jnY&s=rj8l_-oJwvoZhuKeQBtdNhHF22_w46dLHGS5Dgwi1Pk&e=
, it

> is a load generator. You can install it like this: "go get

> github.com/rakyll/hey". It will put 'hey' in $GOPATH/bin/. The

> go-redfish server supports the redfish standard X-Auth-Token as well

> as Basic auth. The benchmarks below are using basic auth in the

> interest of brevity, but it's also simple to benchmark tokens. The
numbers don't appear much different.

>

> Here is a run against the most complicated output currently implemented.

> This run is for 10 seconds, with the default concurrency of 50

> parallel requests. The result is that the average request is 0.1588s

> and the server handles an average of 312 requests per second.

>

> $ hey -z 10s

>
https://urldefense.proofpoint.com/v2/url?u=https-3A__Administrator-3Apassword-4010.35.174.126-3A8443_redfish_v1_Chassis_A&d=DwIGaQ&c=jf_iaSHvJObTbx-siA1ZOg&r=pH43eFdHEcrwxCxoIddEpbqszBn5JkXE8WT1-pzfg5U&m=0V5mbubQ_XiZn1wp-lyxRsX_oDp_ZU7L7TB3taw6jnY&s=39htxfH8ZCgtnHsY85iUfsJYfVNHk5Hy1w0u3N6S73s&e=


> 33

> /Thermal

> Summary:

>   Total:        10.1230 secs

>   Slowest:      1.9524 secs

>   Fastest:      0.0051 secs

>   Average:      0.1588 secs

>   Requests/sec: 312.8521

>

> Response time histogram:

>   0.005 [1]     |

>   0.200 [3062]  |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎

>   0.395 [31]    |

>   0.589 [5]     |

>   0.784 [9]     |

>   0.979 [10]    |

>   1.173 [9]     |

>   1.368 [8]     |

>   1.563 [5]     |

>   1.758 [2]     |

>   1.952 [25]    |

>

> Latency distribution:

>   10% in 0.0840 secs

>   25% in 0.1159 secs

>   50% in 0.1374 secs

>   75% in 0.1576 secs

>   90% in 0.1748 secs

>   95% in 0.1874 secs

>   99% in 1.3962 secs

>

> Details (average, fastest, slowest):

>   DNS+dialup:    0.0036 secs, 0.0000 secs, 1.2168 secs

>   DNS-lookup:    0.0000 secs, 0.0000 secs, 0.0000 secs

>   req write:     0.0000 secs, 0.0000 secs, 0.0007 secs

>   resp wait:     0.1411 secs, 0.0049 secs, 1.1510 secs

>   resp read:     0.0001 secs, 0.0000 secs, 0.0002 secs

>

> Status code distribution:

>   [200] 3167 responses

>

>

> The memory usage of the program under load (Resident size, IOW, RAM

> usage during load is roughly 16MB):

>

> # cat /proc/$(pidof ocp-server.arm)/status

> Name:   ocp-server.arm

> Umask:  0022

> State:  S (sleeping)

> Tgid:   2737

> Ngid:   0

> Pid:    2737

> PPid:   2710

> TracerPid:      0

> Uid:    0       0       0       0

> Gid:    0       0       0       0

> FDSize: 256

> Groups: 0

> VmPeak:  1167212 kB

> VmSize:  1167212 kB

> VmLck:         0 kB

> VmPin:         0 kB

> VmHWM:     16924 kB

> VmRSS:     16844 kB

> RssAnon:            9200 kB

> RssFile:            1788 kB

> RssShmem:           5856 kB

> VmData:   395108 kB

> VmStk:       136 kB

> VmExe:      6304 kB

> VmLib:      2792 kB

> VmPTE:       130 kB

> VmPMD:         0 kB

> VmSwap:        0 kB

> Threads:        45

> SigQ:   0/3577

> SigPnd: 0000000000000000

> ShdPnd: 0000000000000000

> SigBlk: fffffffe7bfa7a25

> SigIgn: 0000000000000000

> SigCgt: ffffffffffc1feff

> CapInh: 0000000000000000

> CapPrm: 0000003fffffffff

> CapEff: 0000003fffffffff

> CapBnd: 0000003fffffffff

> CapAmb: 0000000000000000

> NoNewPrivs:     0

> Cpus_allowed:   3

> Cpus_allowed_list:      0-1

> voluntary_ctxt_switches:        92

> nonvoluntary_ctxt_switches:     21

>

> The binary size is 10MB uncompressed and 2MB compressed (xz level 9)

>

> $ cat ocp-server.arm  | xz -9 -c > ocp-server.arm.xz $ ls -l

> ocp-server.arm* - rwxrwxr-x 1 michael_e_brown michael_e_brown 11169052

> Feb 14 13:14 ocp- server.arm

> -rw-rw-r-- 1 michael_e_brown michael_e_brown  2712208 Feb 14 13:26

> ocp- server.arm.xz

>

> The source is currently sitting at under 5k LoC implementing a few

> proof of concept openbmc implementations calling DBUS, as well as a
simulation.

>

> Concurrency:

> - Highly concurrent. On ARM serves >300 requests per second. On X86,

> goes up to about 3k requests per second

> - For individual requests: can concurrently get data from multiple

> data sources and runs all the plugins for a redfish resource in

> parallel

>

> Deterministic:

> - The design should be fairly deterministic.

>

> Cached:

> - Completely flexible here. The default model is caching the data, but

> it's also supported to make dbus calls per request (though that's not

> really recommended). Currently it caches sensor results and refreshes

> those at a fixed interval, though that could easily be changed.

>

> Platform dependent/independent:

> - Core is completely platform independent.

> - Working on an OCP profile implementation that also has platform

> independent + platform specific hooks. Currently in place are

> simulation implementation plus openbmc dbus implementation for sensors

> (temperature now, working fans next).

>

> DMTF support:

> - In progress. Help needed.

>

> --

> Michael

>

> On Wed, Feb 07, 2018 at 03:48:41AM +0000, Yugi Mani wrote:

> > Here are some more requirements based on our experience with Redfish:

> > 1. Concurrency

> > Web Server and Framework should be able to serve multiple GET

> > requests

> at a time.

> > POST/PATCH/PUT/DELETE requests can be sequential.

> >

> > 2. Deterministic

> > Service should be time deterministic, both boot time and run time.

> > Concurrency shall not impact deterministic property of the service.

> > All requests shall be responded (success/failure) within acceptable

> > time

> limits.

> > Where some requests cannot be completed within time limits, service

> > shall respond with status and expected time to complete.

> >

> > 3. Cached Data

> > Data shall be cached by Redfish service and updated on dbus signals.

> > Collecting required information on demand adversely impacts

> performance.

> > Redfish should rather cache the information and keep updating its

> > cache on notification from dbus that the property(ies) of interest

> > has been

> modified.

> >

> > 4. Platform dependent/independent layer Shall provide a clear

> > isolation between core vs platform properties.

> > Can consider object oriented approach for platform & oem layer to

> > override core methods and objects. Customized hooks and handlers can

> > be provided by platform layer while the data model between layers is

> > maintained consistent across platforms.

> >

> > 5. DMTF Support

> > Redfish have quite a lot of gaps in some of the basic requirements

> > of a

> BMC.

> > a) FRU & FRU Collection Schema

> > b) Sensor & Sensor Collection Schema

> > c) Component Firmware Update (PSU, BIOS, CPLD, etc)

> > d) Master Write-Read

> > e) Clear PSU Faults

> > We need DMTF to actively add/update Redfish schemas that are

> fundamental to any BMC.

> >

> > 7. Error Codes

> > Redfish LogEntry schema doesn’t offer a placeholder for error codes

> > that automation tools can read to categorize the events and trigger

> actuators.

> > One option is to repurpose OEM field.

> >

> > 8. Pagination

> > Event logs can get too big and paginated view is helpful

> >

> > 9. Filtering

> > Query parameter to filter the response limited to certain criteria

> >

> > 10. Anchors

> > Schemas like Chassis and Manager have a bunch of properties that not

> > all requests might be interested in.

> > It is better to be able to request just a fragment of a resource using
‘#’.

> >

> > 11. Rate Limiting

> > Server shall return HTTP 429 when number of requests cross max limit

> permissible from a client.

> > We need some protection against Denial of Service.

> >

> > -Yugi




-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20180223/ff3def57/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/openbmc/attachments/20180223/ff3def57/attachment-0001.gif>


More information about the openbmc mailing list