Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
snf-ganeti
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
itminedu
snf-ganeti
Commits
27f96567
Commit
27f96567
authored
16 years ago
by
Iustin Pop
Browse files
Options
Downloads
Patches
Plain Diff
Implement oneline-output for hbal
parent
9b9a5931
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/hbal.hs
+30
-18
30 additions, 18 deletions
src/hbal.hs
with
30 additions
and
18 deletions
src/hbal.hs
+
30
−
18
View file @
27f96567
...
...
@@ -23,6 +23,7 @@ import Utils
data
Options
=
Options
{
optShowNodes
::
Bool
,
optShowCmds
::
Bool
,
optOneline
::
Bool
,
optNodef
::
FilePath
,
optInstf
::
FilePath
,
optMaxRounds
::
Int
...
...
@@ -34,6 +35,7 @@ defaultOptions :: Options
defaultOptions
=
Options
{
optShowNodes
=
False
,
optShowCmds
=
False
,
optOneline
=
False
,
optNodef
=
"nodes"
,
optInstf
=
"instances"
,
optMaxRounds
=
-
1
...
...
@@ -44,11 +46,12 @@ defaultOptions = Options
we find a valid solution or we exceed the maximum depth.
-}
iterateDepth
::
Cluster
.
Table
->
Int
-- ^ Current round
->
Int
-- ^ Max rounds
->
IO
Cluster
.
Table
iterateDepth
ini_tbl
cur_round
max_rounds
=
iterateDepth
::
Cluster
.
Table
-- The starting table
->
Int
-- ^ Current round
->
Int
-- ^ Max rounds
->
Bool
-- ^ Wheter to be silent
->
IO
Cluster
.
Table
-- The resulting table
iterateDepth
ini_tbl
cur_round
max_rounds
oneline
=
let
Cluster
.
Table
_
ini_il
ini_cv
ini_plc
=
ini_tbl
all_inst
=
Container
.
elems
ini_il
fin_tbl
=
Cluster
.
checkMove
ini_tbl
all_inst
...
...
@@ -58,7 +61,7 @@ iterateDepth ini_tbl cur_round max_rounds =
allowed_next
=
(
max_rounds
<
0
||
cur_round
<
max_rounds
)
in
do
printf
" - round %d: "
cur_round
unless
oneline
$
printf
" - round %d: "
cur_round
hFlush
stdout
let
msg
=
if
fin_cv
<
ini_cv
then
...
...
@@ -71,11 +74,12 @@ iterateDepth ini_tbl cur_round max_rounds =
(
fin_plc_len
-
ini_plc_len
)
else
"no improvement, stopping
\n
"
putStr
msg
hFlush
stdout
unless
oneline
$
do
putStr
msg
hFlush
stdout
(
if
fin_cv
<
ini_cv
then
-- this round made success, try deeper
if
allowed_next
then
iterateDepth
fin_tbl
(
cur_round
+
1
)
max_rounds
then
iterateDepth
fin_tbl
(
cur_round
+
1
)
max_rounds
oneline
-- don't go deeper, but return the better solution
else
return
fin_tbl
else
...
...
@@ -90,6 +94,9 @@ options =
,
Option
[
'C'
]
[
"print-commands"
]
(
NoArg
(
\
opts
->
opts
{
optShowCmds
=
True
}))
"print the ganeti command list for reaching the solution"
,
Option
[
'o'
]
[
"oneline"
]
(
NoArg
(
\
opts
->
opts
{
optOneline
=
True
}))
"print the ganeti command list for reaching the solution"
,
Option
[
'n'
]
[
"nodes"
]
(
ReqArg
(
\
f
opts
->
opts
{
optNodef
=
f
})
"FILE"
)
"the node list FILE"
...
...
@@ -130,6 +137,7 @@ main = do
cmd_args
<-
System
.
getArgs
(
opts
,
_
)
<-
parseOpts
cmd_args
let
oneline
=
optOneline
opts
let
(
node_data
,
inst_data
)
=
case
optMaster
opts
of
""
->
(
readFile
$
optNodef
opts
,
...
...
@@ -140,11 +148,12 @@ main = do
(
nl
,
il
,
ktn
,
kti
)
<-
liftM2
Cluster
.
loadData
node_data
inst_data
printf
"Loaded %d nodes, %d instances
\n
"
unless
oneline
$
printf
"Loaded %d nodes, %d instances
\n
"
(
Container
.
size
nl
)
(
Container
.
size
il
)
let
(
bad_nodes
,
bad_instances
)
=
Cluster
.
computeBadItems
nl
il
printf
"Initial check done: %d bad nodes, %d bad instances.
\n
"
unless
oneline
$
printf
"Initial check done: %d bad nodes, %d bad instances.
\n
"
(
length
bad_nodes
)
(
length
bad_instances
)
when
(
length
bad_nodes
>
0
)
$
do
...
...
@@ -158,21 +167,21 @@ main = do
let
ini_cv
=
Cluster
.
compCV
nl
ini_tbl
=
Cluster
.
Table
nl
il
ini_cv
[]
printf
"Initial coefficients: overall %.8f, %s
\n
"
ini_cv
(
Cluster
.
printStats
nl
)
unless
oneline
$
printf
"Initial coefficients: overall %.8f, %s
\n
"
ini_cv
(
Cluster
.
printStats
nl
)
putStrLn
"Trying to minimize the CV..."
fin_tbl
<-
iterateDepth
ini_tbl
1
(
optMaxRounds
opts
)
unless
oneline
$
putStrLn
"Trying to minimize the CV..."
fin_tbl
<-
iterateDepth
ini_tbl
1
(
optMaxRounds
opts
)
oneline
let
(
Cluster
.
Table
fin_nl
_
fin_cv
fin_plc
)
=
fin_tbl
ord_plc
=
reverse
fin_plc
printf
"Final coefficients: overall %.8f, %s
\n
"
unless
oneline
$
printf
"Final coefficients: overall %.8f, %s
\n
"
fin_cv
(
Cluster
.
printStats
fin_nl
)
printf
"Solution length=%d
\n
"
(
length
ord_plc
)
unless
oneline
$
printf
"Solution length=%d
\n
"
(
length
ord_plc
)
let
(
sol_strs
,
cmd_strs
)
=
Cluster
.
printSolution
il
ktn
kti
ord_plc
putStr
$
unlines
$
sol_strs
unless
oneline
$
putStr
$
unlines
$
sol_strs
when
(
optShowCmds
opts
)
$
do
putStrLn
""
...
...
@@ -187,3 +196,6 @@ main = do
putStrLn
$
Cluster
.
printNodes
ktn
fin_nl
printf
"Original: mem=%d disk=%d
\n
"
orig_mem
orig_disk
printf
"Final: mem=%d disk=%d
\n
"
final_mem
final_disk
when
oneline
$
do
printf
"%.8f %d %.8f %8.3f
\n
"
ini_cv
(
length
ord_plc
)
fin_cv
(
ini_cv
/
fin_cv
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment