Performance in ownCloud Chapter 2
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Mrowczynski, Piotr
There is a growing number of large-scale file synchronization and sharing services in the research collaboration network. In this contribution I will address the extension of the QA and Testing framework for the ownCloud-based services - called Smashbox - with benchmarking capabilities. I will cover the design of performance/stress-tests additions to the smashbox framework and usage of the web-based application to analyze generated results. The aim of this analytical tool is to allow collaborators to identify bottlenecks and benchmark the performance of their respective systems, also comparing results with existing commercial cloud storage services.
 I welcome back. Yes, so that's a chapter two of the performance in Namcloud and this time I will touch yet another topic which is okay you want to make some improvements that's in the synchronization algorithm. So first step actually shouldn't be implementation. First you should design a test. So you have a test drive and development and that's what I did. The topic here is a benchmarking monitoring framework for interconnect and file synchronization sharing services. Okay, what is Smashbox? Smashbox was developed by Kuba from CERN and he developed QA testing tool for the young cloud clients and servers. So it's kind of a test which validates if all the synchronization scenarios are passing, not passing and validation that nothing strange will happen. What I did, I extended that so that you could do some kind of performance tests. Maybe you can attach more clients, different version of that. Maybe you could send the results somewhere to the database and store that remotely so that you could later on make so-called, maybe not data mining but just some kind of research. Okay, exemplary Smashbox test. So you have worker one which let's say it's a Carlos and he wants to upload the file so he just does some operation. You have some operation files on the client, you make a checksum and then you sync it and Smashbox just says okay, I just up to date that you just count the number of files and verify checksums, everything's fine. So when this step is finished, then you progress to the next step in Smashbox in your testing framework and it progresses to the download link. So it's another virtualized client. Yes, and every if files, the number of files and checksums on the one side is equal to the number of files in the other side is equal and it means that synchronization is okay. That's the example of one of the tests and how can you set up your Smashbox tests? You could have some Docker container which probably would be better if it be a real machine. It could be virtualized machine also and then you just set up some database and then you just set up some web browsing open source framework to just query the database and of course you need a server. Okay, so just an exemplary configuration of the file to just give you a sense of how Smashbox is looking like. So of course you need to install your own cloud. Then you have two options. Yes, you are a user. So you need to create a user. You should have a password. So you just need to create your test account. Then you supply exemplary config files specifying all the attributes of your server and which clients you would like to use and if you would like to push to their amount. In this config file you are just performing the, you just say that it's one server and you don't want to send it to any server and it's a local host and yeah. So that's just a typical user. Then you can have another configuration. Each mean in which you create an, so you create the users based on your administrator account. So you specify admin, user admin password and then you can automatically create, delete, recreate users and yeah. In this config you are also specifying, monitoring targets. So you can specify that it should send your results to the influxdb for example. Yeah, and I will not go through to the config file. You could research that on some different, on some GitHub page. And finally you just configured your target. So you just, let's say, configured your client server. It's, let's say, master and on the client you say, I want to support, so version one is supporting bundling, let's say, or some synchronization optimization and the other configuration says don't support it. So in this configuration file you specify what test you want to run, actually the list. So it could be the list of 10 tests, 100 tests and different variations and yeah. And in the other part you just specify which server should use that. And yeah, then you should install your influxdb and grafana. Okay, how the results will look like, in case you didn't specify a database, it will just display the results like uploading time, downloading time and number of synced files if there is a render or if there was a corruption. And in the other case it will just send it to the database which you can query. So exemplary use case. So you're curious, okay, I just installed a server. It's called DataDig, it could be Sandbox, it could be Vigor University, it could be C file also and then you are interested, okay, what's the difference between these services and how my synchronization service is working compared to my competitors, if you have an access of course to them. Yeah, so basically you can compare different institutions, you can go down to one server and saying okay, I have version 9.1, I have version 9.0, then I have version 6.0 and then I have a current master and maybe I also have a master with some performance improvement. And then you just have repeat the test, I don't know, million times or 1,000 times as much as you want. And then you have a kind of group of data which you can analyze. You can also be interested maybe how fast it synchronizes in different scenarios. So you are just bound to one specific configuration and then you synchronize with different distributions of the file. So 1,000 files, 10 files, one file, if the file should exceed the chunking size, maybe it should not. Or it should be in the bundle, maybe it shouldn't. So that's another case which you can do. If you have enough resources, you can also smartly configure it, maybe even extend it. So that's another extension so that it could do, how to say, you could storm your instance. So let's assume that you have a test instance somewhere and you want to test, will it survive 10,000 users synchronizing the same time many files? If you, of course, have enough clients, so you just need to give equal condition. It's not that easy to synchronize and to test having 10,000 users. Actually, you need to have machines which could have an access to the link equal to 10,000 users and resources on the hardware. But anyway, it's also possible. And yeah. If you want to look more, you can go to GitHub or maybe Hub.Docer, which I created. And yeah. That's all. Thank you very much. Do you have any questions?
 I welcome back. Yes, so that's a chapter two of the performance in Namcloud and this time  I will touch yet another topic which is okay you want to make some improvements that's  in the synchronization algorithm. So first step actually shouldn't be implementation. First you  should design a test. So you have a test drive and development and that's what I did. The topic  here is a benchmarking monitoring framework for interconnect and file synchronization sharing  services. Okay, what is Smashbox? Smashbox was developed by Kuba from CERN and he developed QA  testing tool for the young cloud clients and servers. So it's kind of a test which validates  if all the synchronization scenarios are passing, not passing and validation that nothing strange  will happen. What I did, I extended that so that you could do some kind of performance tests. Maybe  you can attach more clients, different version of that. Maybe you could send the results somewhere  to the database and store that remotely so that you could later on make so-called, maybe not  data mining but just some kind of research. Okay, exemplary Smashbox test. So you have worker one  which let's say it's a Carlos and he wants to upload the file so he just does some operation.  You have some operation files on the client, you make a checksum and then you sync it and  Smashbox just says okay, I just up to date that you just count the number of files and verify  checksums, everything's fine. So when this step is finished, then you progress to the next step  in Smashbox in your testing framework and it progresses to the download link. So it's another  virtualized client. Yes, and every if files, the number of files and checksums on the one side is  equal to the number of files in the other side is equal and it means that synchronization is okay.  That's the example of one of the tests and how can you set up your Smashbox tests? You could have  some Docker container which probably would be better if it be a real machine. It could be  virtualized machine also and then you just set up some database and then you just set up some  web browsing open source framework to just query the database and of course you need a server.  Okay, so just an exemplary configuration of the file to just give you a sense of how Smashbox  is looking like. So of course you need to install your own cloud. Then you have two options. Yes,  you are a user. So you need to create a user. You should have a password. So you just need to  create your test account. Then you supply exemplary config files specifying all the attributes of your  server and which clients you would like to use and if you would like to push to their amount.  In this config file you are just performing the, you just say that it's one server and you don't  want to send it to any server and it's a local host and yeah. So that's just a typical user.  Then you can have another configuration. Each mean in which you create an, so you create the users  based on your administrator account. So you specify admin, user admin password and then you can  automatically create, delete, recreate users and yeah. In this config you are also specifying,  monitoring targets. So you can specify that it should send your results to the influxdb for  example. Yeah, and I will not go through to the config file. You could research that on some  different, on some GitHub page. And finally you just configured your target. So you just, let's  say, configured your client server. It's, let's say, master and on the client you say, I want to  support, so version one is supporting bundling, let's say, or some synchronization optimization  and the other configuration says don't support it. So in this configuration file you specify what  test you want to run, actually the list. So it could be the list of 10 tests, 100 tests and  different variations and yeah. And in the other part you just specify which server should use that.  And yeah, then you should install your influxdb and grafana. Okay, how the results will look like,  in case you didn't specify a database, it will just display the results like uploading time,  downloading time and number of synced files if there is a render or if there was a corruption.  And in the other case it will just send it to the database which you can query. So exemplary  use case. So you're curious, okay, I just installed a server. It's called DataDig,  it could be Sandbox, it could be Vigor University, it could be C file also and then you are interested,  okay, what's the difference between these services and how my synchronization service is working  compared to my competitors, if you have an access of course to them. Yeah, so basically you can  compare different institutions, you can go down to one server and saying okay, I have version  9.1, I have version 9.0, then I have version 6.0 and then I have a current master and maybe I also  have a master with some performance improvement. And then you just have repeat the test, I don't know,  million times or 1,000 times as much as you want. And then you have a kind of  group of data which you can analyze. You can also be interested maybe how fast it synchronizes in  different scenarios. So you are just bound to one specific configuration and then you synchronize  with different distributions of the file. So 1,000 files, 10 files, one file, if the file should  exceed the chunking size, maybe it should not. Or it should be in the bundle, maybe it shouldn't.  So that's another case which you can do. If you have enough resources, you can also smartly  configure it, maybe even extend it. So that's another extension so that it could do,  how to say, you could storm your instance. So let's assume that you have  a test instance somewhere and you want to test, will it survive 10,000 users synchronizing the same  time many files? If you, of course, have enough clients, so you just need to give equal condition.  It's not that easy to synchronize and to test having 10,000 users. Actually, you need to have  machines which could have an access to the link equal to 10,000 users and resources on the hardware.  But anyway, it's also possible. And yeah. If you want to look more, you can go to GitHub or maybe  Hub.Docer, which I created. And yeah. That's all. Thank you very much. Do you have any questions?
Piotr_Mrowczynski__Benchmarking_and_monitoring_framework_for_interconnected_file_synchronization_and_0_71.png Piotr_Mrowczynski__Benchmarking_and_monitoring_framework_for_interconnected_file_synchronization_and_72_119.png Piotr_Mrowczynski__Benchmarking_and_monitoring_framework_for_interconnected_file_synchronization_and_120_167.png Piotr_Mrowczynski__Benchmarking_and_monitoring_framework_for_interconnected_file_synchronization_and_168_227.png Piotr_Mrowczynski__Benchmarking_and_monitoring_framework_for_interconnected_file_synchronization_and_228_311.png Piotr_Mrowczynski__Benchmarking_and_monitoring_framework_for_interconnected_file_synchronization_and_312_13343.png Piotr_Mrowczynski__Benchmarking_and_monitoring_framework_for_interconnected_file_synchronization_and_13344_13484.png