-
Notifications
You must be signed in to change notification settings - Fork 4
Added file staging #164
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Added file staging #164
Conversation
contain elements from multiple layers.
properties where it makes sense.
|
Is there a standard definition of staging behavior here or is that up for discussion? For example, would staging be a default or non-default behavior? Is it a copy or link operation or is it configurable? Can it be partial such as just of stage-out operations but not stage-in? Can it be partial among the set of files subject to staging such as based on size or may be a regex / wildcard? |
I would say that given the nature of the project, everything is up for discussion.
I'm not sure I fully understand what you mean, but if a job does not specify files to stage, then nothing is staged.
You can take a look at the changes, but yes, copy/link/move is configurable per file.
A user can specify, for a job, files to stage out but no files to stage in.
There is no complex filtering at this time (i.e., based on size or regex), but you can stage entire directories recursively. This is a good point though, and we should probably discuss if there is a need for such filtering that cannot be done otherwise. For example, stage-in filtering can be done by user code, since files to stage in are, by definition, accessible to the client side. Stage-out filtering may be a little more tricky, because user code doe not necessarily know what files the job will produce before the job runs. However, it is always possible to have the job run a post-processing step which filters relevant files into an output directory. |
andre-merzky
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I know this is a draft, but left some comments anyway. Thanks a bunch for working on this!
initialized at construction. This is mostly something that would be characteristic of Python with big-list-kwargs and does not encourage a uniform API.
andre-merzky
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for addressing my concerns! I left a comment on the last open one, but please don't consider that blocking a merge!
|
An issue that came up is supporting file staging for batch schedulers. Background: Some job schedulers support some basic form of staging. For example, PBS allows staging with the While the specification is kept separate from implementation issues, it should still allow for the implementation to actually be possible. So the issue at hand is if and how a potential batch scheduler executor could implement file staging. There are a few possibilities:
|
|
Late reply, sorry. IMHO we should distinguish between (a) staging to the resource, (b) to the task sandbox (workdir), and (c) to node local storage. (a) is only needed for layer 1 and 2 - but in that case is not enacted by the batch system, but need to happen before submission (I think). (b) and (c) might be relevant to layer 0 - with the difference that (c) cannot possibly be enacted before job queuing as we do not know the exact set of nodes the job will run on (and/or don't have access to those nodes). If the batch system does not support (c), the only chance I see is via the batch script - with all the caveats you point out. I would suggest to specify (a) in layer 1/2 and (b) in layer 0, but not rely on the batch system, but rather on the PSIJ implementation to enact the staging. An implementation MAY choose to support (c) as optimization. |
This adds file staging as part of Layer 0.
File staging was initially part of Layer 1, but there is reasonable reason for existing Layer 0 executors to support file staging.
For example, the local executor is useful as a test executor and should support staging in order to allow testing of software without the complexity of remote execution. Another example is PBS, which natively supports staging directives in submit scripts.
There are some other changes, such as the removal of the "early draft" status and a move to something that is closer to a change log.