Comments (2)
You've stumbled on something that I never actually managed to complete. Currently a "Plan" is tied to a specific backend, and a user is tied to a plan. So you can have multiple users each with their own backend. This was "good enough" in my flatting situation where I could just tell my flatmates to pay for their own VPS and I could set it up so any torrents they downloaded went to their own VPS instead of mine.
But you're right, a proper torrent scheduling algorithm would be ideal. I could never decide on what i should look like - if you scheduled based on available space, you need to know the total torrent size up front (impossible with magnet links). You also run the risk of one node serving hundreds of small torrents, and another node serving a few large torrents.
If you schedule based on "number of torrents", you run the risk of running one of your nodes out of space because one node could have 3 small torrents on it and the other could have 3 large torrents.
I came to the conclusion that I needed a combination of both, but I needed to know the total size of the torrent up front before making a scheduling decision. This meant I had to either drop support for magnet links, or create a "magnet to torrent" converter.
I have tried several times to make a "magnet to torrent" converter but I never seem to finish the project or get it into a working state.
from openseedbox.
Instead checking torrent size, maybe you can check actual size of the disk? You can use percentage to balance then.
DiskA = used/total_100 //used space in percent
DiskB = used/total_100 //used space in percent
if DiskA>DiskB then
put.torrent.in = diskB
This is just a concept. I don't know about language you used so I don't know the real environment about it.
This will balance the space used.
from openseedbox.
Related Issues (20)
- Job improvements: raw use of the parameterized class 'LoggedJob'
- Job improvements: maintenance job HOT 1
- Job improvements: `java.lang.IllegalAccessException` prevents Node Poller job from scheduling HOT 14
- Show the torrent backend's version in the Nodes view HOT 2
- OpenSeedbox backend thinks the torrent backend is up, even it is not installed: "/bin/sh: 1: transmission-daemon: not found" HOT 2
- GitHub: manage `pr-${{github.event.pull_request.number}}` tagged docker images at GHCR on Pull Request events
- GitHub: reusable workflows
- Play! Framework: rewrite OpenSeedbox to use another MVC framework HOT 4
- views: fix and improve size checks on Lists HOT 1
- Transmission, Play! (RePlay! also) vs UTF-8: Unexpected Error, Your file does not exists HOT 8
- Backend: multiparch Docker build fails to restart torrent backend on non `amd64` platforms HOT 3
- Docker is sunsetting Free Team organizations on April 14, 2023 HOT 3
- Add download tests
- Long torrent names and download URLs could fail the poller job: `ERROR: value too long for type character varying(255)`
- Show active torrents in the client view
- Show peer's progress at the peers tab of the Torrent Info modal view HOT 1
- Siena's DDL generator doesn't restore the table's primary key sequence value after database model update
- Try OpenJDK with Eclipse OpenJ9 (aka IBM Semeru) instead the default OpenJDK HotSpot (aka Eclipse Temurin) HOT 7
- GitHub: push `latest` images to Docker Hub automatically (on master branch change) HOT 4
- GitHub: update `openseedbox/{client,server}` images on `openseedbox/{base,tomcat}` push
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from openseedbox.