AreWeCompressedYet: Difference between revisions
No edit summary |
No edit summary |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
[https://arewecompressedyet.com/ AreWeCompressedYet] is an automatic service for compressing videos with Daala and other codecs. | [https://arewecompressedyet.com/ AreWeCompressedYet] is an automatic service for compressing videos with AV1, VP9, Daala, Thor, and other codecs. | ||
It generates graphs using different metrics, to enable comparisons between different versions of | It generates graphs using different metrics, to enable comparisons between different versions of codec source code. | ||
For bugs and enhancements, see its [https://github.com/tdaede/awcy/issues GitHub Issues] page. | For bugs and enhancements, see its [https://github.com/tdaede/awcy/issues GitHub Issues] page. | ||
==Usage== | |||
===Submitting a Run=== | |||
[[File:Awcy submit new job.png|right|frameless|450px]] | |||
Choose the '''Active Runs''' tab, then the green '''Submit New Job''' button. | |||
[[File:Awcy options.png|right|frameless|450px]] | |||
* '''Run ID''' - A unique name for your run (this is filled with the current date and time as a default) | |||
* '''Git Commit Hash''' - The hash of the commit to be tested. This must be visible either on Gerrit or a specially installed personal repo. This is the "Commit" on Gerrit and not the Change-Id or tree hash. | |||
* '''Codec''' - The codec you want to test and certain default options. | |||
* '''Set''' - The set of videos or images you want to test the codec with. | |||
* '''Extra CLI options''' - Optional parameters, which are passed to the encoder along with the defaults. Usually not needed. | |||
* '''Extra build options''' - Optional parameters, which are passed to the configure script. For AV1, pass flags to enable experiments here. (for example, --enable-experimental --enable-feature) | |||
* '''IRC nick''' - Name to notify on #daala. This can also be used to sort your runs. | |||
* '''Custom qualities''' - Optional list of quantizers to use (these override the default list of quantisers). | |||
==Repos== | ==Repos== | ||
Line 20: | Line 39: | ||
==Internal tools== | ==Internal tools== | ||
* rd_tool.py: | * rd_server.py: the backend server process. | ||
* rd_tool.py: an alternate way to invoke the same tests as rd_server.py, it's no longer maintained and may be broken. This was used by previous versions of AWCY, and can only run one test at a time. | |||
* metrics_gather.sh: A script called by rd_tool.py, contains the command line parameters for all testable codecs. | * metrics_gather.sh: A script called by rd_tool.py, contains the command line parameters for all testable codecs. | ||
Line 27: | Line 48: | ||
For an explanation of AWCY's metrics output format, see the '''[[RD_Curve_Data_Format]]''' page. | For an explanation of AWCY's metrics output format, see the '''[[RD_Curve_Data_Format]]''' page. | ||
== | ==Maintenance== | ||
The server is a CentOS 7 virtual machine running on catfish.xiph.org. There are few config file changes, so the CentOS machine should be easily upgradeable to get security fixes. | The server is a CentOS 7 virtual machine running on catfish.xiph.org. There are few config file changes, so the CentOS machine should be easily upgradeable to get security fixes. | ||
Line 34: | Line 55: | ||
====awcy==== | ====awcy==== | ||
The AWCY server has a unit file at '''/etc/systemd/system/awcy.service'''. It listens at '''localhost:3000'''. | The AWCY server has a unit file at '''/etc/systemd/system/awcy.service'''. It listens at '''localhost:3000'''. | ||
====rd_server==== | |||
The backend has a unit file at '''/etc/systemd/system/rdserver.service'''. It listens at '''localhost:4000'''. It currently has no authentication and should not be exposed to the Internet. | |||
====nginx==== | ====nginx==== | ||
NGINX is configured to be a TLS endpoint and proxy_pass to localhost:3000. | NGINX is configured to be a TLS endpoint and '''proxy_pass''' to '''localhost:3000'''. Certificates are managed by the EFF's [https://certbot.eff.org certbot] and issued by [https://letsencrypt.org/ Let's Encrypt]. | ||
====firewalld==== | ====firewalld==== | ||
Firewalld is configured to allow ports 22, 80, and 443 only. | |||
====chrony==== | ====chrony==== | ||
Line 46: | Line 71: | ||
See AWCY logs with | See AWCY logs with | ||
journalctl -u awcy.service | journalctl -u awcy.service | ||
and | |||
journalctl -u rdserver.service | |||
===Directory Structure=== | ===Directory Structure=== | ||
Line 82: | Line 109: | ||
UserKnownHostsFile=/dev/null | UserKnownHostsFile=/dev/null | ||
LogLevel ERROR | LogLevel ERROR | ||
</pre> | |||
== Common issues == | |||
=== Runs don't display === | |||
<pre> | |||
sudo su awcy | |||
cd ~/awcy | |||
node generate_list.js | |||
</pre> | </pre> | ||
[[Category:Daala]] | [[Category:Daala]] |
Latest revision as of 15:48, 29 August 2017
AreWeCompressedYet is an automatic service for compressing videos with AV1, VP9, Daala, Thor, and other codecs.
It generates graphs using different metrics, to enable comparisons between different versions of codec source code.
For bugs and enhancements, see its GitHub Issues page.
Usage
Submitting a Run
![](/images/thumb/d/dd/Awcy_submit_new_job.png/450px-Awcy_submit_new_job.png)
Choose the Active Runs tab, then the green Submit New Job button.
![](/images/thumb/d/d1/Awcy_options.png/450px-Awcy_options.png)
- Run ID - A unique name for your run (this is filled with the current date and time as a default)
- Git Commit Hash - The hash of the commit to be tested. This must be visible either on Gerrit or a specially installed personal repo. This is the "Commit" on Gerrit and not the Change-Id or tree hash.
- Codec - The codec you want to test and certain default options.
- Set - The set of videos or images you want to test the codec with.
- Extra CLI options - Optional parameters, which are passed to the encoder along with the defaults. Usually not needed.
- Extra build options - Optional parameters, which are passed to the configure script. For AV1, pass flags to enable experiments here. (for example, --enable-experimental --enable-feature)
- IRC nick - Name to notify on #daala. This can also be used to sort your runs.
- Custom qualities - Optional list of quantizers to use (these override the default list of quantisers).
Repos
https://github.com/tdaede/awcy
https://github.com/tdaede/rd_tool
Command-line tools
submit_awcy.py
Usage:
DAALA_ROOT=./ submit_awcy.py --help
You must have a secret_key file in the current directory, containing your key to access AreWeCompressedYet.
By default, the prefix used for the run is your local branch name.
Internal tools
- rd_server.py: the backend server process.
- rd_tool.py: an alternate way to invoke the same tests as rd_server.py, it's no longer maintained and may be broken. This was used by previous versions of AWCY, and can only run one test at a time.
- metrics_gather.sh: A script called by rd_tool.py, contains the command line parameters for all testable codecs.
Output Format
For an explanation of AWCY's metrics output format, see the RD_Curve_Data_Format page.
Maintenance
The server is a CentOS 7 virtual machine running on catfish.xiph.org. There are few config file changes, so the CentOS machine should be easily upgradeable to get security fixes.
Daemons
awcy
The AWCY server has a unit file at /etc/systemd/system/awcy.service. It listens at localhost:3000.
rd_server
The backend has a unit file at /etc/systemd/system/rdserver.service. It listens at localhost:4000. It currently has no authentication and should not be exposed to the Internet.
nginx
NGINX is configured to be a TLS endpoint and proxy_pass to localhost:3000. Certificates are managed by the EFF's certbot and issued by Let's Encrypt.
firewalld
Firewalld is configured to allow ports 22, 80, and 443 only.
chrony
Chrony is required to keep the system time in sync. Amazon Web Services signatures require an accurate system clock.
journald
See AWCY logs with
journalctl -u awcy.service
and
journalctl -u rdserver.service
Directory Structure
-rw-rw-r--. 1 awcy awcy 3078 Aug 19 19:06 awcy_server.js -rwxrwxr-x. 1 awcy awcy 169 Aug 17 23:43 create_test_branch.sh drwxrwxr-x. 12 awcy awcy 4096 Aug 20 16:31 daala -rw-------. 1 root root 1692 Aug 18 16:26 daala.pem drwxrwxr-x. 14 awcy awcy 4096 Aug 19 15:02 daalatool -rw-rw-r--. 1 awcy awcy 1079 Aug 7 19:31 LICENSE drwxrwxr-x. 5 awcy awcy 48 Aug 17 23:47 node_modules -rwxrwxr-x. 1 awcy awcy 124 Aug 18 17:22 nuke_branch.sh drwxrwxr-x. 3 awcy awcy 4096 Aug 18 17:17 rd_tool -rw-rw-r--. 1 awcy awcy 10 Aug 7 19:31 README.md drwxrwxr-x. 25 awcy awcy 4096 Aug 20 19:49 runs -rwxrwxr-x. 1 awcy awcy 148 Aug 17 23:43 run_video_test.sh -rw-rw-r--. 1 awcy awcy 23 Aug 17 23:48 secret_key -rwxrwxr-x. 1 awcy awcy 1212 Aug 19 14:27 submit_awcy.py drwxrwxr-x. 2 awcy awcy 4096 Aug 19 21:33 www
Files not part of github repo
- node_modules: created by npm when you install the necessary node modules to run awcy_server.js.
- daala.pem: Private SSH key used to connect to the AWS instances.
- daalatool: A local clone of Daala, used for the contents of the tools/ directory.
- secret_key: File containing the secret key used on the main website.
- config.json: Contains IRC channel to connect to. TODO: put secret_key and other stuff in here too.
- rd_tool/daala.pem: same file as in higher level directory
.ssh/config contents:
Host * StrictHostKeyChecking no UserKnownHostsFile=/dev/null LogLevel ERROR
Common issues
Runs don't display
sudo su awcy cd ~/awcy node generate_list.js