{"action":"created","issue":{"url":"https://api.github.com/repos/i2p/i2p.i2p-bote/issues/21","repository_url":"https://api.github.com/repos/i2p/i2p.i2p-bote","labels_url":"https://api.github.com/repos/i2p/i2p.i2p-bote/issues/21/labels{/name}","comments_url":"https://api.github.com/repos/i2p/i2p.i2p-bote/issues/21/comments","events_url":"https://api.github.com/repos/i2p/i2p.i2p-bote/issues/21/events","html_url":"https://github.com/i2p/i2p.i2p-bote/issues/21","id":222041433,"number":21,"title":"I2P-Bote: File System Abstraction (Trac #1316)","user":{"login":"str4d","id":4993799,"avatar_url":"https://avatars3.githubusercontent.com/u/4993799?v=3","gravatar_id":"","url":"https://api.github.com/users/str4d","html_url":"https://github.com/str4d","followers_url":"https://api.github.com/users/str4d/followers","following_url":"https://api.github.com/users/str4d/following{/other_user}","gists_url":"https://api.github.com/users/str4d/gists{/gist_id}","starred_url":"https://api.github.com/users/str4d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/str4d/subscriptions","organizations_url":"https://api.github.com/users/str4d/orgs","repos_url":"https://api.github.com/users/str4d/repos","events_url":"https://api.github.com/users/str4d/events{/privacy}","received_events_url":"https://api.github.com/users/str4d/received_events","type":"User","site_admin":false},"labels":[{"id":585135977,"url":"https://api.github.com/repos/i2p/i2p.i2p-bote/labels/apps/plugins","name":"apps/plugins","color":"FFFFFF","default":false},{"id":585135953,"url":"https://api.github.com/repos/i2p/i2p.i2p-bote/labels/Migrated%20from%20Trac","name":"Migrated from Trac","color":"FFFFFF","default":false},{"id":585136001,"url":"https://api.github.com/repos/i2p/i2p.i2p-bote/labels/str4d","name":"str4d","color":"FFFFFF","default":false},{"id":585136080,"url":"https://api.github.com/repos/i2p/i2p.i2p-bote/labels/task","name":"task","color":"FFFFFF","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2017-04-16T23:56:11Z","updated_at":"2017-04-17T00:02:02Z","closed_at":null,"body":"I noticed that the I2P router does a lot of disk io during startup, which seems to slow things down. I believe it's due to the fact that there are a lot of small files in the folder that contains my I2P application data.\n\nAs an example: My I2PBote plugin alone maintains 2,898 files(!), each only about 1,716 bytes large on average, amounting to less than 5 MB in total.\n\nObviously accessing lots of small files hurts performance. Wouldn't it be nice if the I2P router offered its core modules as well as its plugins some kind of own file system abstraction, where the module/plugin \"sees\" what appears to be a file system, while there is in fact just one large file (\"container\") on the disk, and where that one file is being dynamically resized as required? Each module/plugin would have its own container. This would allow the operating system to cache files much better and increase overall performance, especially on router startup.\n\nThis approach could also work around potential problems that are related to platform differences between operating systems that handle paths case-sensitive and those that handle them case-insensitive. Plus it could \"sandbox\" file system access to prevent accidental file io outside a module's folder on the actual file system. Another benefit would be that certain file access could be handled entirely in user-mode and would thus be faster than having to do expensive syscalls all the time. You could even allow a module to transparently encrypt its container with a password.\n\nI hope you get the idea.\n\nMigrated from https://trac.i2p2.de/ticket/1316\n```json\n{\n    \"status\": \"assigned\", \n    \"changetime\": \"2016-08-05T15:06:29\", \n    \"description\": \"I noticed that the I2P router does a lot of disk io during startup, which seems to slow things down. I believe it's due to the fact that there are a lot of small files in the folder that contains my I2P application data.\\n\\nAs an example: My I2PBote plugin alone maintains 2,898 files(!), each only about 1,716 bytes large on average, amounting to less than 5 MB in total.\\n\\nObviously accessing lots of small files hurts performance. Wouldn't it be nice if the I2P router offered its core modules as well as its plugins some kind of own file system abstraction, where the module/plugin \\\"sees\\\" what appears to be a file system, while there is in fact just one large file (\\\"container\\\") on the disk, and where that one file is being dynamically resized as required? Each module/plugin would have its own container. This would allow the operating system to cache files much better and increase overall performance, especially on router startup.\\n\\nThis approach could also work around potential problems that are related to platform differences between operating systems that handle paths case-sensitive and those that handle them case-insensitive. Plus it could \\\"sandbox\\\" file system access to prevent accidental file io outside a module's folder on the actual file system. Another benefit would be that certain file access could be handled entirely in user-mode and would thus be faster than having to do expensive syscalls all the time. You could even allow a module to transparently encrypt its container with a password.\\n\\nI hope you get the idea.\", \n    \"reporter\": \"ExtraBattery\", \n    \"cc\": \"HungryHobo, str4d\", \n    \"resolution\": \"\", \n    \"_ts\": \"1470409589334842\", \n    \"component\": \"apps/plugins\", \n    \"summary\": \"I2P-Bote: File System Abstraction\", \n    \"priority\": \"maintenance\", \n    \"keywords\": \"I2P-Bote performance\", \n    \"version\": \"0.9.13\", \n    \"parents\": \"\", \n    \"time\": \"2014-06-21T08:38:14\", \n    \"milestone\": \"\", \n    \"owner\": \"str4d\", \n    \"type\": \"task\"\n}\n```\n"},"comment":{"url":"https://api.github.com/repos/i2p/i2p.i2p-bote/issues/comments/294381685","html_url":"https://github.com/i2p/i2p.i2p-bote/issues/21#issuecomment-294381685","issue_url":"https://api.github.com/repos/i2p/i2p.i2p-bote/issues/21","id":294381685,"user":{"login":"str4d","id":4993799,"avatar_url":"https://avatars3.githubusercontent.com/u/4993799?v=3","gravatar_id":"","url":"https://api.github.com/users/str4d","html_url":"https://github.com/str4d","followers_url":"https://api.github.com/users/str4d/followers","following_url":"https://api.github.com/users/str4d/following{/other_user}","gists_url":"https://api.github.com/users/str4d/gists{/gist_id}","starred_url":"https://api.github.com/users/str4d/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/str4d/subscriptions","organizations_url":"https://api.github.com/users/str4d/orgs","repos_url":"https://api.github.com/users/str4d/repos","events_url":"https://api.github.com/users/str4d/events{/privacy}","received_events_url":"https://api.github.com/users/str4d/received_events","type":"User","site_admin":false},"created_at":"2017-04-17T00:02:02Z","updated_at":"2017-04-17T00:02:02Z","body":"Trac update at 20140928T15:23:23: \n* zzz commented:\n\n> My comments above were regarding the files the router uses.\n> \n> As comment 2 above, and the OP, reference I2P-Bote as the owner of the majority of the files, assigning to HungryHobo.\n\n\n* zzz changed owner from \"\" to \"HungryHobo\"\n* zzz changed status from \"new\" to \"assigned\""}}
{"actor":{"display_login":"str4d"}}