> On Dec 17, 2018, at 9:01 AM, Wiles, Keith <keith.wi...@intel.com> wrote: > > > >> On Dec 17, 2018, at 5:45 AM, Thomas Monjalon <tho...@monjalon.net> wrote: >> >> Hi Keith, >> >> 16/12/2018 18:46, Keith Wiles: >>> DFS stands for DPDK Filesystem, which helps expose data >>> and control files in a FUSE based filesystem. The dfs requires >>> libfuse3 and libjansson to be present in the Linux system. >> >> You presented this idea at the DPDK Summit in Dublin, >> and I have not seen any public discussion about the idea. >> Let's try to debate it here. >> >>> DFS provides a simplified API on top of the FUSE APIs to >>> simplify creating and using FUSE. >>> >>> Here is the github repo: https://github.com/akheron/jansson >>> Here is the github repo: https://github.com/libfuse/libfuse >>> >>> Please use you system updater tool yum, apt-get, ... to add >>> support for these two libraries. Also read the dfs documentation >>> in the docs directory for more details. >> [...] >>> +DPDK File System (DFS) >>> +====================== >>> + >>> +This DPDK library provides a pseudo file system much like Linux /proc or >>> /system >>> +file systems, but this one is a userspace file system. Allowing >>> applications to >>> +create and design file system directories and files using the FUSE 3.2 >>> +https://github.com/libfuse/libfuse code. >> >> My first thought is we are missing the problem statement. >> What are you trying to solve? Which use case? > > The issue is we do not have a clean way for users and developers to extract > information from DPDK or the application for monitoring/control. Using APIs > is fine from the application perspective to get information and set > information, but the user or admin of a system does not have access to those > APIs without a developer giving access via a command line or other method. > Each developer creating an application would have to provide this basic level > of information via some method in a cloud or VNF system to allow the user or > orchestration access. Using DFS the developer would not normally have to > write the access methods/display himself, saving him time to develop his > application. > > A file system is the simplest and easiest method to get host command line > access to that information. Control or initialization can also be added at > this same simple method for DPDK and the application. Currently I do not have > any control support in DFS and it would be reasonable to add these controls > (in a limited way) to remove DPDK command line options or cmdline cmds when > starting DPDK. Giving some runtime control is better for the application in a > cloud or NFV environments. > >> >> In DPDK, we have some run-time options accessible from the command line, >> and some public API functions. > > We have cmdline access to these functions and lets face it cmdline is very > difficult for most to use :-), but we do not have access from the system > level. The APIs in DFS is much easier and cleaner to allow access to the > required information. The application developer also can use these APIs to > expose this information without having to give some type of cmdline access. > The application may not want a cmdline interface (or allowed to give cmdline > access), but does want to get access to the information in the application > and DPDK. > > Having access via the command line or bash shell is much easier to use and > provides simple access by other languages like Go, Python, Bash, Lua … any > language that can read or write into a normal filesystem. Then the system > level administrator or application developer can write tools in any language > he see fit. > >> I think it is agreed that the primary interface must be the API functions. >> The command line options should be a responsibility of the application >> to implement them or not. > > It is not agreed, customers I have spoke with do not agree that DPDK > information must be supplied by the application, it should be the > responsibility of DPDK in this case to provide that information in some easy > to access method. If the application side wants to provide information or > control then the developer can also use DFS or not. >> >> I think exposing a filesystem tree interface would be also an application >> responsibility. Actually, it could be part of a DPDK application, >> or be run as a secondary process application. > > The secondary process method means the user must use the same version of the > application and DPDK to access the primary or we can crash the secondary or > primary application. It is very easy to use the wrong version of DPDK > secondary application and get invalid information as the primary is different > is some offset in a structure. > > Remember cloud or NFV systems will have a large number of applications and > versions. Using a secondary process model is also a bit of a security problem > and can cause the primary application to crash if the secondary does > something wrong. Also the system would have to provide a different secondary > application matching every DPDK/Application on the platform. Having to match > up secondary applications to each and every application is a nightmare for > the admin or developer. > >> It is probably a good idea to implement it as a ready-to-use library. >> As it can be implemented on top of DPDK API, I think it should live >> outside of the main repository. As any other DPDK applications, it will >> require to be updated when the DPDK APIs are updated or extended. >> In my opinion, we should not mandate DPDK contributors to update DFS >> when adding or updating an API. That's why it should not be part of the >> DPDK package. > > The only changes from DPDK developers is when a common API in DPDK changes > and is used by DFS. It would not be difficult to keep these changes updated > as these changes in API do not happen often. Requiring the developer of DPDK > to maintain the changes is already required for other parts of DPDK, correct? > > Maintaining DFS outside of DPDK is an artificial requirement as it does not > placed any more burden on DPDK developers IMO. It does place some one time > work on the test system for DPDK to test DFS. The testing system would need > to build DPDK with DFS and provide some basic level of verification. > > The test system can also use DFS in normal testing to extract DPDK > information without having to use expect scripts against the cmdline system, > which are very error prone and the syntax of the command could change. If the > testing system in DPDK does not do this level of testing I think we should be > adding that level to verify DPDK. > >> One more argument to keep it outside: for diversity and innovation, >> it is better to not enforce one (new) control interface as the official >> (and suggested) one way. > > The current control method does not work for all cases, it works only for the > developer. The system admin or the developer must remember cmdline syntaxes, > which are difficult to use (Look at testpmd ;-). In some cases using a > command line built into the application may not be reasonable in a normal > runtime environment. Accessing the filesystem is normal and easy as admin, > developer, user and orchestration have access to the filesystem. > >> >> One more question, >> Is there something exposed in DFS that has not a public DPDK API? >> If so, we should try fill the gaps. > > Yes, only a couple of debug routine ring and tailq walk routines I included > in the patch. I was not focused on adding more APIs to DPDK main code only > exposing the information in DPDK using the current APIs. DFS should only use > standard DPDK APIs to expose information to the file system and the > application can write very simple routines to expose any other information he > wants via DFS from his application. > > The current exposed APIs in DFS are just the simple stats and information I > could collect from DPDK today, but I believe we can expose other information > as we define these very quickly.
Does anyone have comments or reviews on this patch? Thanks > >> >> > > Regards, > Keith Regards, Keith