You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: docs4understanding/active.md
+16-10
Original file line number
Diff line number
Diff line change
@@ -9,18 +9,23 @@ In this instance, we would expect the OSS to implement something with the semant
9
9
10
10
```plantuml
11
11
package "hardware view 1" {
12
-
12
+
left to right direction
13
13
component storage {
14
14
database ost1
15
15
database ost2
16
16
database ost3
17
-
port OSS
17
+
component OSS
18
+
OSS -- ost1
19
+
OSS -- ost2
20
+
OSS -- ost3
18
21
}
19
22
20
23
component node {
21
24
component application
22
-
port kernel
25
+
component kernel
26
+
application --> kernel
23
27
}
28
+
24
29
kernel --> OSS: LAN traffic.
25
30
26
31
}
@@ -36,8 +41,8 @@ An example of application parallelism would be the use of asynchronous requests
36
41
THe more interesting problem for now arises in where we have "storage parallelism".
37
42
38
43
```plantuml
39
-
package "hardware view 1" {
40
-
44
+
package "hardware view 2" {
45
+
left to right direction
41
46
component storage {
42
47
database ost1
43
48
database ost2
@@ -46,17 +51,18 @@ package "hardware view 1" {
46
51
47
52
component node {
48
53
component application
49
-
port kernel
54
+
component kernel
55
+
application --> kernel
50
56
}
51
57
kernel --> ost1: LAN
52
58
kernel --> ost2: LAN
53
59
kernel --> ost3: LAN
54
60
}
55
61
```
56
62
57
-
Where would we implement what? There is no benefit to be gained from implementing `_decode_chunks` in the kernel, as the entire chunk has already been served to the compute node, and no data movement has been avoided. Depending on the layout of chunks across OSTs, there may be no benefit in attempting active storage. It depends on how contiguous the data is in storage. If however, it is possble to
58
-
break down the logic of `_from_storage` so that individual "part_chunks" which are contiguous are processed on the storage side of the LAN (in the ost or nearby) then meaningful performance is possible.
59
-
The Python client in the end would simply see a list of partial products of the computational method which have come direct from the osts. It will not care whether those parts came from a different breakdown of storage than it anticpated in the chunking (though of course the storage will need to do the necessary mapping to generate the partial sums).
63
+
Where would we implement what? There is no benefit to be gained from implementing `_decode_chunks` in the kernel, as the entire chunk has already been served to the compute node, and no data movement has been avoided. Depending on the layout of chunks across OSTs, there may be no benefit in attempting active storage. It depends on how contiguous the data is in storage.
64
+
65
+
If however, it is possble to break down the logic of `_from_storage` so that individual "part_chunks" which are contiguous are processed on the storage side of the LAN (in the ost or nearby) then meaningful performance is possible. The Python client in the end would simply see a list of partial products of the computational method which have come direct from the osts. It will not care whether those parts came from a different breakdown of storage than it anticpated in the chunking (though of course the storage will need to do the necessary mapping to generate the partial sums).
60
66
61
-
In the longer term, where we expect that we will have to pass a decompression method down through the `_decode_chunk` interface, it _will_ be necessary for the computational storage to respect the `_decode_chunk` interface server-side. This is of course what is required with S3, where we effectively need an S3 proxy to do the work.
67
+
In the longer term, where we expect that we will have to pass a decompression method down through the `_decode_chunk` interface, it _will_ be necessary for the computational storage to respect the `_decode_chunk` interface server-side. This is of course what is required with S3, where we effectively need an S3 proxy to do the work. It might be that this is also required in some implementations of POSIX storage systems if they wish to implement computational storage OR they will need to somehow respect block contiguous placement in some way.
0 commit comments